Melih Mucuk Melih Mucuk - 1 month ago 16
Android Question

Web Service return null in Android

I have a web service that I use in my android project. One method in my web service return null in android with ksoap2. When I debug the project, envelope is returning like this:

GPSYerBilgisiGetirResponse{GPSYerBilgisiGetirResult=anyType{}; }


Out of android, I run the web service and give parameter to method, returning data like this:

<ArrayOfFirma xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<Firma>
<gpsilce>BEYOĞLU</gpsilce>
<gpssemt>KASIMPAŞA</gpssemt>
</Firma>
</ArrayOfFirma>


This is my function for using connect to web service

private String[] konumGetir(String ParamPK){
PropertyInfo pk = new PropertyInfo();
pk.name= "pk";
pk.setValue(ParamPK);
pk.type = PropertyInfo.STRING_CLASS;

SoapObject request = new SoapObject(NAMESPACE, "GPSYerBilgisiGetir");
request.addProperty(pk);
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("http://tempuri.org/GPSYerBilgisiGetir", envelope);
SoapObject response = (SoapObject) envelope.getResponse();
konumList=new String[1];

for(int i=0;i<response.getPropertyCount();i++){
Object property = response.getProperty(i);
if(property instanceof SoapObject){
SoapObject firmalar = (SoapObject) property;
konumList[0]=firmalar.getProperty("gpssemt") + "-" + firmalar.getProperty("gpsilce");
}
}
}
catch (Exception e) {
e.printStackTrace();
}
return konumList;

}


This is my web service method:

<WebMethod()> _
Public Function GPSYerBilgisiGetir(ByVal pk As String) As List(Of Firma)
Dim konumlist As New List(Of Firma)

Dim dg As New dgetir("SELECT DISTINCT ILCE,SEMT FROM GPSYERBILGISI WHERE PK='" + pk + "'")
While dg.dtr.Read
Dim gpskonum As New Firma

gpskonum.gpsilce = dg.dtr.Item("ILCE")
gpskonum.gpssemt = dg.dtr.Item("SEMT")
konumlist.Add(gpskonum)

End While
dg.close()

Return konumlist

End Function

Answer

Try this code.

private String[] konumGetir(String ParamPK){
   SoapObject request = new SoapObject(NAMESPACE, "GPSYerBilgisiGetir");
   request.addProperty("pk", ParamPK);
   SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
   envelope.dotNet = true;
   envelope.setOutputSoapObject(request);
   HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
  try {
     androidHttpTransport.call(SOAP_ACTION_NAME, envelope);
     SoapObject result = (SoapObject) envelope.getResponse();
     int childCount = result.getPropertyCount();
     konumList = new String[childCount];
     SoapObject tempArray[] = new SoapObject[childCount];
     int i;
     for (i = 0; i < childCount; i++) {
        tempArray[i] = (SoapObject) result.getProperty(i);
        konumList[i] = tempArray.getProperty(0).toString();
     }
  } catch (Exception e) {           
     e.printStackTrace();
  }
  return konumList;

}

Hope it helps.

Comments