Search code examples
androidweb-servicesksoap2android-ksoap2

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

Solution

  • 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.