Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XMLPull Parser Exception when calling Magento api using SOAP from Android

I am trying to call magento api using Soap from android but I am getting XMLpullparser Exception.I am using ksoap library.I seached on google but i can't find any solution.Below is my code..

1 import java.io.IOException;

2 import org.ksoap2.SoapEnvelope;
3 import org.ksoap2.serialization.SoapObject;
4 import org.ksoap2.serialization.SoapSerializationEnvelope;
5 import org.ksoap2.transport.AndroidHttpTransport;
6 import org.xmlpull.v1.XmlPullParserException;

7 import android.app.Activity;
8 import android.os.Bundle;
9 import android.util.Log;

10       public class MagentoSoapActivity extends Activity {
11         /** Called when the activity is first created. */

12      private static final String NAMESPACE = "urn:Magento";
13      private static final String Method_Name="login";
14      private static final String URL ="http://www,mymagento,com/api/soap/?wsdl=1";
15      private static final String SOAP_ACTION ="urn:Magento/login";

16 @Override
17 public void onCreate(Bundle savedInstanceState) {
18    super.onCreate(savedInstanceState);
19    setContentView(R.layout.main);
20    try {
21      SoapObject request = new SoapObject(NAMESPACE,Method_Name);

22        request.addProperty("username", "XXX");
23        request.addProperty("apiKey", "YYY");
24        SoapSerializationEnvelope envelopes = new SoapSerializationEnvelope(
25                SoapEnvelope.VER11);

26        envelopes.dotNet = false;
27        envelopes.xsd = SoapSerializationEnvelope.XSD;
28        envelopes.enc = SoapSerializationEnvelope.ENC;


29       envelopes.setOutputSoapObject(request);

30        AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
31        androidHttpTransport.debug =true;
32        androidHttpTransport.call(SOAP_ACTION, envelopes);//Getting the Exception here
33        Object result = envelopes.getResponse();

34        Log.d("sessionId", result.toString());

35        //making call to get list of customers

36        String sessionId = result.toString();

37        request = new SoapObject(NAMESPACE,"customerCustomerList");
38        request.addProperty("sessionId",sessionId );

39        envelopes.setOutputSoapObject(request);
40        androidHttpTransport.call(SOAP_ACTION, envelopes);

41        result = envelopes.getResponse();

42        Log.d("Customer List", result.toString());

43    } catch (Exception e) {
44        e.printStackTrace();
45    }
46 }
47 }

Below is stacktrace:

org.xmlpull.v1.XmlPullParserException: expected: START_TAG   
{http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <definitions   
name='Magento' targetNamespace='urn:Magento'>@4:50 in   
java.io.InputStreamReader@44f13f40) 

Please help me I am really depressed by this error. Thanks in advance

like image 339
krushnakant Avatar asked Jun 25 '12 06:06

krushnakant


4 Answers

remove the suffix "?wsdl" from URL it works for me. hope this helps someone~

like image 161
KingTO Avatar answered Oct 05 '22 11:10

KingTO


Change:

  private static final String URL ="http://indieswebs.in/demostore/api/soap/?wsdl=1";

To

  private static final String URL ="http://indieswebs.in/demostore/api/soap";

Related:

  • calling magento web service from android client using kSoap2
  • http://inchoo.net/mobile-development/android-development/magento-v2-api-soap-android/
like image 20
B00MER Avatar answered Oct 05 '22 10:10

B00MER


We've been working a lot on this kind of apps and we have just open sourced an SDK for Android and iOS to ease the connection with the Magento's APIs. Maybe it helps you with your development or give you ideas on how to resolve this issue, as we're also using ksoap for SOAP communications: http://github.com/agilemonkeys/meets-android

like image 26
Javier Toledo Avatar answered Oct 05 '22 11:10

Javier Toledo


I solved my problem.I changed the complete code and instead of using SOAP now I am using XMLRPC.There is XmLRPC library at http://code.google.com/p/android-xmlrpc/ and also the example of how to use this library.

This is the link for how to parse this response in android http://inchoo.net/mobile-development/android-development/parsing-the-xmlrpc-webservice-response-in-android/

Hope this helps someone.

Thanks everyone for your response.

like image 22
krushnakant Avatar answered Oct 05 '22 10:10

krushnakant