[Seç][/url]private void denemeWebService(){
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); // istek oluşturuyoruz
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true; // .net servisi olduğunu belirtiyoruz
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); // web servis urlmizi veriyoruz
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION, envelope); //web servisi çağırdık
SoapObject response = (SoapObject) envelope.getResponse(); //web service den gelecek sonuçları kullanmak için obje yarattık
Liste = new String[response.getPropertyCount()]; // Listemizin countını web serviceden kaç tane sonuç dönecekse o kadar veriyoruz
for(int i=0;i<response.getPropertyCount();i++){ //for ile gelen sonuçların içinde geziyoruz
Liste
= response.getPropertyAsString(i).toString().trim(); //Sırasıyla string cinsinden gelen sonuçları listeye atıyoruz.
}
}
catch (Exception e) {
e.printStackTrace();
}
}
Web Service bağlantı fonksiyonumuz hazır. Yalnız bunu direk web servisi kullanacağımız yerde çağırarak kullanamıyoruz. Uzun sürecek bir işlem olduğu için "Kapatmaya zorla" hatası verecektir. Daha önce bahsettiğim AsyncTask yapısı içinde bu fonksiyonun çağırılması gerekli. AsyncTask nedir diyenler için ;
Link : http://replikacep.com/android-programlama-asynctask-ve-arka-plan-islemleri-t11026.0.html (http://replikacep.com/android-programlama-asynctask-ve-arka-plan-islemleri-t11026.0.html)
Yazıyı incelediyseniz AsyncTask yapısında doInBackground() kısmında fonksiyonumuzu çağırmamız gerekiyor.
[Seç][/url]public class denemeAsyncTask extends AsyncTask<String[],String[],String[]>{
private ProgressDialog dialog = new ProgressDialog(this); // kullanıcıyı işlem sonuçlanana kadar bilgilendirmek için progress dialog oluşturuyoruz
@Override
protected void onPreExecute() {
dialog.setMessage("Yükleniyor..."); // Yükleniyor mesajı veriyoruz
dialog.show();
}
@Override
protected String[] doInBackground(String[]... params) {
denemeWebService(); // fonksiyonu çağırdık. İşlem yapılıyor.
return Liste;
}
protected void onPostExecute(String[] Liste){
// web servis işini bitirdi listeyi doldurdu.
// listeyi ana thread de ne için kullanacaksak o işlemler burada yapılır.
dialog.dismiss(); //en son olarak kullanıcıyı bilgilendirdiğimiz dialogu sonlandırıyoruz.
}
}
Son olarak web servisimizi nerede kullanacaksak orada AsyncTask'ımızı çalıştırıyoruz.
İşlem bu kadar (https://www.replikacep.com/proxy.php?request=http%3A%2F%2Freplikacep.com%2FSmileys%2Fsuperuser%2Fsmiley.gif%2522%2520class%3D%2522smiley.png&hash=10d243f4e2590142468a1f488152ebfb91670129)
Bu örnekte anlatılanlar parametre istemeyen web servis methodları için geçerlidir.
Parametre isteyen web servis methodları için fonksiyonumuza küçük bir ekleme yapacağız.
[Seç][/url]private void denemeWebService(String Param1,String Param2){
PropertyInfo parametre1 = new PropertyInfo();
parametre1.name= "name1"; // web service methodunun aldığı parametre adı ile aynı olmak zorunda.
parametre1.setValue(Param1);
parametre1.type = PropertyInfo.STRING_CLASS;
PropertyInfo parametre2 = new PropertyInfo();
parametre2.name= "name2"; // web service methodunun aldığı parametre adı ile aynı olmak zorunda.
parametre2.setValue(Param2);
parametre2.type = PropertyInfo.STRING_CLASS;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty(parametre1);
request.addProperty(parametre2);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut=request;
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
Liste = new String[response.getPropertyCount()];
for(int i=0;i<response.getPropertyCount();i++){
Liste = response.getPropertyAsString(i).toString().trim();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
AsyncTask içinde fonksiyonumuzu çağırırken parametreleri göndermeyi unutmuyoruz (https://www.replikacep.com/proxy.php?request=http%3A%2F%2Freplikacep.com%2FSmileys%2Fsuperuser%2Fsmiley.gif%2522%2520class%3D%2522smiley.png&hash=10d243f4e2590142468a1f488152ebfb91670129)
İşlem tamamdır kolay gelsin (https://www.replikacep.com/proxy.php?request=http%3A%2F%2Freplikacep.com%2FSmileys%2Fsuperuser%2Fsmiley.gif%2522%2520class%3D%2522smiley.png&hash=10d243f4e2590142468a1f488152ebfb91670129)
Kaynak: http://blog.melihmucuk.com/android-programlama-dotnet-web-service-kullanimi/ (http://blog.melihmucuk.com/android-programlama-dotnet-web-service-kullanimi/)