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
remove the suffix "?wsdl" from URL it works for me. hope this helps someone~
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:
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With