public final static String URL = " http://sitem.com/androidservice.asmx?op=Hello"; burasıda sitede sizin çağıracağınız metot ismi olacak metodu sitede test ederken browsern url kısmında metoda tıkladığınızda ne görüyorsanız onu yazacaksınız public static final String NAMESPACE = ""; // burası http şeklinde servicenin çalışacağı dizin olacak örnek " http://sitem.com/androidservice" gibi public static final String SOAP_ACTION_PrefIX = "/"; burası ayıraç dokunmuyoruz
*
burası ana soap clasımız
private class AsyncTaskRunner extends AsyncTask {
*
burada değişken tanımlamaları yapılabilir
*
@Override
protected String doInBackground(String... Params) {
publishProgress("mesaj");
try {
*
bunlar soapın kendi ayarları
*
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope. VER11);
SoapObject request = new SoapObject(NAMESPACE, METHOD);
*
burada serviste kullandığımız metodlara parametre geçiriyoruz
*
PropertyInfo parametre = new PropertyInfo();
parametre = new PropertyInfo();
parametre. SetName("metodun aldığı parametre ismi");
parametre. SetValue("gönderilen değer");
parametre. SetType(String. Class); // değişken tipi
request. AddProperty(parametre);
*
parametnre sayısı birden fazla ise hemen üstte oluşturduğumuz PropertyInfo sınıfından türeyen parametre sınıfını
parametre = newPropertyInfo();
şeklinde yeniden tanımlayıp altına aynen yukarıdaki gibi değişkenlerimizi verebiliriz ve bunu kaç parametre geçireceksek o kadar yapmalıyız burada dikkat edilmesi gereken bir konu mesela servisteki metod örn 5 parametre alıyorsa siz 5 parametreyide burada sırasıyla belirtmek zorundasınız soldan sağa olacak şekilde sadece boş parametrelerin setvalue kısmını "" şeklinde boş bırakın yeter
*
envelope. DotNet = true; // burası önemli çünkü. Net ile çalışırken bunu aktif yapmalıyız
envelope. BodyOut = request;
httpTransportSE transport = new httpTransportSE(URL);
try {
transport. Call(NAMESPACE + SOAP_ACTION_PrefIX + METHOD,
envelope);
} catch (IOException e) {
e. PrintStackTrace();
} catch (XmlPullParserException e) {
e. PrintStackTrace();
}
if (envelope. BodyIn != null) { // burada servisten dönen cevap envelope. BodyIn içine alınıyor boş olup olmadığını kontrol ediyoruz
SoapPrimitive resultSOAP = (SoapPrimitive) ((SoapObject) envelope. BodyIn)
.getProperty(0);
resp = resultSOAP. ToString(); // yanıt boş değilse ki bu hata mesajı bile olabilir yanıtı resp değişkenine atıyoruz ve resp return ediliyor
}
} catch (Exception e) {
e. PrintStackTrace();
resp =e. GetMessage();
}
return resp;
}
/**
* @see android. Os. AsyncTask#onpostExecute(java. Lang. Object)
*/
@Override
protected void onpostExecute(String result) {
// burası resp return edildikten sonra çalışan blok gelen resp değeri ni burada alıp istediğiniz gibi action yapabilirsiniz
super. OnpostExecute(result);
}
@Override
protected void onPreExecute() {
// burası doInBacground dan önce ve soap içinde aynı şekilde olmak üzere en önce çalışan metodtur burada gerekli ön değişken işlemleri yapılabilir değer atama vs
super. OnPreExecute();
}
@Override
protected void onProgressUpdate(String... Text) {
// Toast. MakeText(ctx, text[0], Toast. LENGTH_LONG).show();
//burasıda işlemler devam ederken çalışan bölümdür mesela text değişkeninin içine doinbackgraund içinde publishProgress("mesaj"); şeklinde bir ibare kullandım ben siz orada istersenin bilgilendirme amaçlı olarak progressbar falan kulllanabilirsiniz
super. OnProgressUpdate();
}
}
Ana class içinde bu 3 değişkeni tanımlıyoruz
*
public final static String URL = " http://sitem.com/androidservice.asmx?op=Hello"; burasıda sitede sizin çağıracağınız metot ismi olacak metodu sitede test ederken browsern url kısmında metoda tıkladığınızda ne görüyorsanız onu yazacaksınız
public static final String NAMESPACE = ""; // burası http şeklinde servicenin çalışacağı dizin olacak örnek " http://sitem.com/androidservice" gibi
public static final String SOAP_ACTION_PrefIX = "/"; burası ayıraç dokunmuyoruz
*