Ksoap ile Android, Web Servis haberleşmesi nasıl yapılır?

Merhaba arkadaşlar bu yazımızda mobil uygulama ile sunucuyu, ksoap kütüphanesi üzerinden nasıl iletişim kurabileceğimizden bahsedeceğim. Gün geçtikçe mobil uygulamaların popülerliği daha da artmakta ve mobil uygulama geliştirme oldukça basit bir hale gelmektedir. Örnek olarak daha önceki android ile ilgili yazıları inceleyebilirsiniz.

Android stuido üzerinden “empty activity” ile yeni proje açalım. Bu projemizde kullanıcı adı şifre sorgulama işlemini gerçekleştireceğiz. Projemiz oluşturulduktan sonra ksoap kütüphanesini linkten indirelim.

Kütüphaneyi indirdiğimiz dosyadan kopyalayarak android studio üzerinden Project Files>>app>>app>>libs klasörünün altına yapıştıralım. Yapıştırma işlemini tamamladıktan sonra kütüphaneyi seçerek sağ tıklayarak Add as library seçeneğine tıklayalım. Böylelikle kütüphane olarak eklemiş bulunmaktayız.

Activity Main ekranında 2 adet EditText ve 1 adet Buton ekledikten sonra aşağıdaki gibi bir ekran elde etmiş bulunmaktayız.

GirisSorgula

Textboxlardan kullanıcı adı ve şifreyi aldıktan sonra eklediğimiz kütüphane yardımıyla web servisimize bilgileri göndereceğiz.

/*Lütfen yorum satırlarını dikkate alınız.*/

public class WebServisExample extends AppCompatActivity {
String KullanıcıAdı="";
String Sifre="";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_yaris_oyuncu_davet);
    KullanıcıAdı=txtKullaniciAdi.getText().trim();
    Sifre=txtKullaniciAdi.getText().trim();
    try{
      new WebServis().execute();
    }catch(Exception e){}
}

class WebServis extends AsyncTask<Void, Void, Void> {

final String NAMESPACE = "https://caglartelef.com/Ws.asmx";
final String URL = "https://caglartelef.com/WS.asmx?op=KullanıcıGiris";
final String SOAP_ACTION = "https://caglartelef.com/Ws.asmx/KullanıcıGiris";
final String METHOD_NAME = "KullanıcıGiris";

@Override
protected void onPreExecute() {
   super.onPreExecute();
   /*Servise gitmeden önce çalışacak kod bloğu.*/
   /*ProgressDialog  pd; oncreate üzerinde global olarak tanımlanmalıdır.*/
   pd = new ProgressDialog(GirisSorgula.this);
   pd.setMessage("Lütfen Bekleyin...");
   pd.show();
}
@Override
protected Void doInBackground(Void... params) {
   /*Servise gidip geldiği zamanlarda çalışacak kod bloğu.*/
   SoapObject spObjectGonder = new SoapObject(NAMESPACE, METHOD_NAME);
   spObjectGonder.addProperty("KullanıcıAdı", KullanıcıAdı);
   spObjectGonder.addProperty("Sifre", Sifre);
   /*Tırnak içerisinde yeşil ile yazılmış olan KullanıcıAdı, Sifre web servisteki ilgili  metot ile aynı olmak zorundadır.*/
   SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
   envelope.dotNet = true;/*envelope.dotNet = true; alanı web servisimiz Microsoft tabanlı olduğunu göstermektedir.*/
   envelope.setOutputSoapObject(spObjectGonder);
   try {
      HttpTransportSE transport2 = new HttpTransportSE(URL);
      transport2.debug = true;
      transport2.call(SOAP_ACTION, envelope);
      /*spObjectGonder Soap paketini HttpTransportSE üzerinden url oluşturarak gönderdik.*/
      SoapPrimitive spPrimitiveGelen = (SoapPrimitive) envelope.getResponse();
      /*Gelen soap paketini alıyoruz. “(SoapPrimitive)” demek tek bir parametre geri dönüş aldığımız için kullandık. Bize servisimiz 0-1 değerlerinden birisi döndürmektedir.*/
      Sonuc = Integer.parseInt(spPrimitiveGelen.toString());
      /*Integer Sonuc; oncreate üzerinde global olarak tanımlanmalıdır.*/
      /*Gelen değer integere parse ederek aldık. Sonuc değişkenine atadık.*/
   } catch (XmlPullParserException e) {e.printStackTrace();}
   catch (IOException e) { e.printStackTrace();}return null;}
@Override
protected void onPostExecute(Void result) {
   /*Tüm işlemler bittikten sonra çalışacak kod bloğu.*/
   pd.dismiss();
   /*ProgressDialog işlemini sonlandırıyoruz.*/
   if (Sonuc == 0){
      Toast.makeText(getApplicationContext(), "Kullanıcı Adı veya Şifre Yanlış!", Toast.LENGTH_LONG).show();
      /*Eğer servisten sıfır değeri gelmişse Kullanıcı Adı Şifre yanlış diye Toast mesajı veriyoruz.*/
    }else if(Sonuc == 1){
    /*Eğer servisten bir değeri gelmişse anasayfaya yönlendirme işlemi yapıyoruz.*/
    startActivity(new Intent(GirisSorgula.this, AnaSayfa.class));
    GLoginEdtxtOgrNo.setHint("Kullanıcı Adı");
    GLoginEdtxtUserPassword.setHint("Şifre");
    }else{
       Toast.makeText(getApplicationContext(), "Bir şeyler yanlış gitti!", Toast.LENGTH_LONG).show();
       /*Eğer servisten sıfır veya bir değerinden farklı bir değer gelmişse hata mesajı veriyoruz.*/
    }
   }
  }
 }

Böylelikle servis kullanarak uzak sunucu veya veritabanına android uygulama erişmiş bulunmaktayız. Bir sonraki yazımızda servislerin nasıl hazırlanacağını anlatacağım.

Uygulamanın android studio ile hazılanmış kaynak kodlarına indirmek için TIKLAYINIZ.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir