Call magento web service from android client using kSoap2

I am trying to access the magento web service from an android client. It should return a session identifier. I already made this uing java client using apache and I managed to call the method. How can I get xmlpullparser exception when trying with android client as: 10-24 15: 25: 44.409: WARN / System.err (277): org.xmlpull.v1.XmlPullParserException: expected: START_TAG { http: //www.w3 .org / 2001/12 / soap-envelope } Envelope (position: START_TAG @ 2: 327 in java.io.InputStreamReader@44ee2268 )

Well, this is my wsdl file from which I am trying to access the login method: wsdl

my java code is:

public class DeviceClientActivity extends Activity {
/** Called when the activity is first created. */
private static final String NAMESPACE = "urn:Magento";
private static final String URL = "http://xxx.xxx.xx.xxx/magento/index.php/api/v2_soap?wsdl";
private static final String METHOD_NAME = "login";
private static final String SOAP_ACTION ="urn:Mage_Api_Model_Server_V2_HandlerAction";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Log
    .d("WS",
          "--------------------- Webservice Part Begins ---------------------");  
Log.d("WS", "1. SoapObject Construction");  
SoapObject objsoap=new SoapObject(NAMESPACE, METHOD_NAME);  

objsoap.addProperty( " ", "alokxxxx" ); objsoap.addProperty( "apiKey", "xxxxxx" );
Log.d( "WS", " SOAP Object End!!!" );

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
      SoapEnvelope.VER11); 
Log.d("WS", "2. Envelop Created");    
envelope.setOutputSoapObject(objsoap);
Log.d("WS", "3. Request Into Envelop");
AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
httpTransport.debug = true; 
Log.d("WS", "5. Transport Level to True");
try {
    httpTransport.call(SOAP_ACTION, envelope);

// WARN/System.err(277): org.xmlpull.v1.XmlPullParserException: : START_TAG {http://www.w3.org/2001/12/soap-envelope} (: START_TAG @2: 327 java.io.InputStreamReader@44ee2268)

Log.d("WS", "6. httpTransport.call");
    if (envelope != null) 
    {
       SoapObject loresponse = (SoapObject) envelope.getResponse();
       SoapObject logObject = (SoapObject)loresponse.getProperty("sessionId");           
       Log.d("WS", "logObject: "+logObject);                      
    } 
    else 
    {
       Log.d("WS", "Response Envelop Error");
    }

} catch (IOException e) {
    e.printStackTrace();
} catch (XmlPullParserException e) {
    e.printStackTrace();
}
}

}

: DEBUG/WS (333): --------------------- - ------------------- - 10-29 15: 38: 33.643: DEBUG/WS (333): 1. SoapObject Construction
10-29 15: 38: 33.673: DEBUG/WS (333): SOAP End::
10-29 15: 38: 33.673: DEBUG/WS (333): 2. Envelop Created 10-29 15: 38: 33.673: DEBUG/WS (333): 3. Envelop
10-29 15: 38: 33.683: DEBUG/WS (333): 5. Trueorg.ksoap2.transport.AndroidHttpTransport@44eeb200 10-29 15: 38: 33.683: DEBUG/Try (333): try

10-29 15: 38: 34.903: WARN/System.err(333): org.xmlpull.v1.XmlPullParserException: : START_TAG {http://schemas.xmlsoap.org/soap/envelope/} (: START_TAG @2: 327 java.io.InputStreamReader@44efbe90)
? .

+2
1

. , wsdl url

public boolean login()  
    {
        try
        {
            SoapObject request = new SoapObject("http://schemas.xmlsoap.org/wsdl/","login");
            request.addProperty("username",apiuid.getText().toString());
            request.addProperty("apiKey",apipwd.getText().toString());
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
            envelope.dotNet=false;
            envelope.setOutputSoapObject(request); 
            HttpTransportSE androidHttpTransport = new HttpTransportSE(apiurl.getText().toString());
            androidHttpTransport.call("http://schemas.xmlsoap.org/wsdl/login", envelope);
            String result =(String)envelope.getResponse();
            String URL = new String();
            URL=apiurl.getText().toString();
            Editor e = userDetails.edit();
                e.putString("url", URL);
                e.putString("uid", apiuid.getText().toString());
                e.putString("pwd", apipwd.getText().toString());
                e.putString("lastsession", result);
                e.commit();
               return true;
        } catch(IOException e)
             {alertbox("IO error",e.getMessage());return false;}
          catch(XmlPullParserException e)
             {alertbox("xml error",e.getMessage());return false;}
          catch(Exception e)
             {alertbox("error",e.getMessage());return false;}     
    }
+1

All Articles