Android ile java kullanılarak yazılmış web servislerini kullanmak istiyorum. Deneme olarak netbeans içinde bulunan CalculatorApp örnek projesini kullandım. Örnekteki web servis kodu:

@WebService()

public class CalculatorWS {

/**
 * Web service operation
 */
@WebMethod(operationName = "add")
public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
    System.out.println("çalıştı");
    System.out.println("i--->" + i + "\\tj---->" + j);
    System.out.println("----------------");
    return i + j;
}

}

Benim bu servisi kullanmak için yazdığım ksoap kodları:

private static final String NAMESPACE = "http://calculator.me.org/";
private static final String SERVICE_URL = "http://192.168.1.110:8080/CalculatorApp/CalculatorWSService";

@Override
public int topla(int i, int j) {
    String metodIsmi = "add";
    SoapObject request = new SoapObject(NAMESPACE, metodIsmi);
    request.addProperty("i", i);
    request.addProperty("j", j);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.avoidExceptionForUnknownProperty = true;
    envelope.dotNet = true;
    envelope.encodingStyle = SoapEnvelope.ENC;
    envelope.setAddAdornments(false);
    envelope.implicitTypes = false;
    envelope.setOutputSoapObject(request);

    HttpTransportSE androidHttpTransport = new HttpTransportSE(SERVICE_URL);
    androidHttpTransport.debug = true;
    androidHttpTransport.setXmlVersionTag("<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>");

    try {
        androidHttpTransport.call("\\"http://calculator.me.org/CalculatorApp/addRequest\\"", envelope);

        SoapPrimitive response = (SoapPrimitive) envelope.getResponse();

        Log.d("requestDump", androidHttpTransport.requestDump);
        Log.d("Sonuc:", response.getValue());

        return Integer.parseInt(response.getValue().toString());
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("hata", e.getMessage());
    }
    return -1;
}

Bir kaç tane daha örnek denedim fakat ne yaptıysam olmadı.Her seferinde web servise android tarafından gönderilen parametreler boş olarak geliyor. Normalde wsimport kullanarak oluşturduğum web servis istemcilerinde bir problem çıkmamasına rağmen ksoap kullanarak bir türlü istediğim şekilde çalıştıramadım. Gönderilen istekler şu şekilde:

JAX-WS istemcisi tarafından gönderilen istek:

<?xml version='1.0' encoding='UTF-8' ?>
<S:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope">
<S:Body>
    <ns2:add
        xmlns:ns2="http://calculator.me.org">
        <i>2</i>
        <j>6</j>
    </ns2:add>
</S:Body>
<s:envelope>

Buda ksoap tarafından gönderilen istek:

<?xml version="1.0" encoding="UTF-8"?>
<v:Envelope 
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:d="http://www.w3.org/2001/XMLSchema" 
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
    <add xmlns="http://calculator.me.org/">
        <i i:type="d:int">5555</i>
        <j i:type="d:int">55</j>
    </add>
</v:Body>
</v:envelope>

İki isteği incelediğimde ksoap tarafından gönderilen istekde fonksiyondan önce prefix kullanılmadığını farkettim. İsteği aynen alıp body etiketi içindeki add kısmını

<px:add xmlns:px="http://calculator.me.org/">
     <i i:type="d:int">5555</i>
     <j i:type="d:int">55</j>
</px:add>

şeklinde değiştirip curl test ettiğimde parametrelerin boş olarak gitmediğini gördüm. Yani sorunun fonksiyondan önce prefix kullanımıyla alakalı olduğunu düşünüyorum fakat ksoap tarafında buna nasıl müdahale edeceğimi bulamadım. Yardımı dokunacak arkadaşlara şimdiden teşekkürler :)

soruldu: 16 Oca '15, 15:42

gurhan_kucuk's gravatar image

gurhan_kucuk
1914612
cevap kabul oranı: 0%

Bu soruya ilk cevap veren sen ol!
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×819
×10
×4
×1

Soruldu: 16 Oca '15, 15:42

Görüntüleme: 386 kez

Son güncelleme: 16 Oca '15, 15:42

powered by BitNami OSQA