views:

85

answers:

0

Hi,

I am trying to call a WCF Web Service from Android using KSOAP2 library. But I am getting this END_TAG exception. I have followed this thread to call WCF Web Service but still no result. I am passing "urn:TestingWcf/GetNames" as SOAP_ACTION, does this causes problem in Android since the error occurs at the statement "aht.call(SOAP_ACTION, envelope)" where aht is AndroidHttpTransport class object.

Can someone let me know what the problem may be?

import org.ksoap2.*;

import org.ksoap2.serialization.*;

import org.ksoap2.transport.*;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class Ksoap2Test extends Activity {

private static final String METHOD_NAME = "GetNamesJsonWithParam"
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://192.168.3.61/BattleEmpire.Service/TestingWcf.svc/basic";

final String SOAP_ACTION = "urn:TestingWcf/GetNamesJsonWithParam";
TextView tv;
StringBuilder sb;

@Override
public void onCreate(Bundle savedInstanceState) 
{
  super.onCreate(savedInstanceState);
  tv = new TextView(this);
  sb = new StringBuilder();
  call();
  tv.setText(sb.toString());
  setContentView(tv);
}

public void call() 
{
    try 
    {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty("imran", "Qing");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        System.out.println("Request " + envelope.toString());
        //HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        AndroidHttpTransport aht = new AndroidHttpTransport(URL);

        aht.call(SOAP_ACTION, envelope);

        //aht.debug = true;

        /*HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.call(SOAP_ACTION, envelope);*/

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

        //to get the data
        String resultData = result.toString();
        // 0 is the first object of data 
        sb.append(resultData + "\n");

        SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
        System.out.println(resultsRequestSOAP.toString());
    }                
    catch (Exception e) 
    {
        e.printStackTrace();
        sb.append("Error:\n" + e.getMessage() + "\n");
    }
}

} `