Android WebServis (SOAP) Kullanımı

Gökhan YAVAŞ
gokhanyavas
Published in
2 min readNov 14, 2015

Merhabalar,

Bu yazımda Android WebServis SOAP kullanımından bahsedeceğim. Öncelikle WebServis nedir? SOAP nedir? bunlardan bahsedelim..

WebServis, Web üzerinden HTTP protokolü ile hizmet veren program parçalarıdır.

SOAP (Basit Nesne Erişim Protokolü) dağıtık uygulamalarda ve web servislerinin haberleşmesinde kullanılmak üzere tasarlanan, RPC (Remote Procedure Call) modelini kullanan, istemci/sunucu mantığına dayalı bir protokoldür. Daha genel olarak SOAP, web üzerinden fonksiyonları kullanmak için geliştirilmiş bir sistemin XML tabanlı kurallar topluluğudur. SOAP ile ilgili bütün mesajlar XML formatında iletilir ve temel olarak bir SOAP mesajı 3 şekilde oluşabilir:

  • Metot Çağırımı
  • Cevap Mesajı
  • Hata Mesajı

Şimdi kod kısmına gelelim.. Öncelikle yeni bir proje oluşturun. Bir sonraki adım WebServise erişebilmek için kullanacağımız kütüphaneyi projeye import etmek. Genel olarak KSoap kütüphanesi kullanılıyor siz farklı kütüphanelerde kullanabilirsiniz.. KSoap’ı bu adresten indirelim ve projemizin libs klasörüne import edelim. Buraya kadar herşey tamamsa kod kısmına geçebiliriz. Öncelikle layout dosyasından başlayıp bir görünüm oluşturalım.

<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="Celsius --> Farenheit"
android:textSize="30dp"
android:layout_margin="10dp" />
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:numeric="integer"
android:singleLine="true"
android:textSize="80dp"
android:layout_below="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp" />
<TextView
android:id="@+id/tv_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="" android:textSize="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="178dp" />
Objelerimizi tanımlıyoruz :
private final String NAMESPACE = "http://www.w3schools.com/webservices/";
private final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
private final String SOAP_ACTION = "http://www.w3schools.com/webservices/CelsiusToFahrenheit";
private final String METHOD_NAME = "CelsiusToFahrenheit";
private String TAG = "GOKHANYAVAS";
private static String celcius;
private static String fahren;
Button b;
TextView tv;
EditText et;
onCreate ://Celcius Edittext Kontrol
et = (EditText) findViewById(R.id.editText1);
//Fahrenheit Text Kontrol
tv = (TextView) findViewById(R.id.tv_result);
//Buttona basıldığında webservis çağırılıyor.
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Değer olup olmadığı kontrol ediliyor, değer yoksa uyarı veriliyor.
if (et.getText().length() != 0 && et.getText().toString() != "") {
celcius = et.getText().toString();AsyncCallWS task = new AsyncCallWS();task.execute();
//Eğer textview boşsa uyarı ver.
} else {
tv.setText("Celcius Değeri Girin!");
}
}
});
getFahrenheit isminde method oluşturuyorum:public void getFahrenheit(String celsius) {
//İstek yaratıyorum
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//Parametreler
PropertyInfo celsiusPI = new PropertyInfo();
//Parametre ismi
celsiusPI.setName("Celsius");
//Parametre değeri
celsiusPI.setValue(celsius);
//Parametre data tipi
celsiusPI.setType(double.class);
//isteği parametreye ekliyorum.
request.addProperty(celsiusPI);
//Envelope oluşturuyorum
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
// SOAP objesini set ediyorum
envelope.setOutputSoapObject(request);
// HTTP
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {androidHttpTransport.call(SOAP_ACTION, envelope);SoapPrimitive response = (SoapPrimitive) envelope.getResponse();fahren = response.toString();} catch (Exception e) {
e.printStackTrace();
}
}
ve son olarak internet iznimide ekleyip projeyi sonlandırıyorum..
<uses-permission android:name="android.permission.INTERNET" />Projeye github üzerinden ulaşabilirsiniz.. Başka bir yazıda görüşmek üzere ;)[dt_button size="small" style="default" animation="none" color_mode="default" icon="" icon_align="left" color="" link="https://github.com/gokhanyavas/SoapExample" target_blank="true"]Github[/dt_button]

--

--