从Android使用SOAP调用MagentoAPI时出现XMLPull解析器异常
我试图使用android上的Soap调用magento api,但遇到XMLpullparser异常。我使用的是ksoap库。我搜索过谷歌,但找不到任何解决方案。下面是我的代码从Android使用SOAP调用MagentoAPI时出现XMLPull解析器异常,android,magento,soap,ksoap2,Android,Magento,Soap,Ksoap2,我试图使用android上的Soap调用magento api,但遇到XMLpullparser异常。我使用的是ksoap库。我搜索过谷歌,但找不到任何解决方案。下面是我的代码 1 import java.io.IOException; 2 import org.ksoap2.SoapEnvelope; 3 import org.ksoap2.serialization.SoapObject; 4 import org.ksoap2.serialization.SoapSerializatio
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 }
以下是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)
org.xmlpull.v1.XmlPullParserException:应为:开始标签
{http://schemas.xmlsoap.org/soap/envelope/}信封(位置:起始标签@4:50英寸
java.io。InputStreamReader@44f13f40)
请帮帮我,这个错误让我很沮丧。
提前感谢更改:
private static final String URL ="http://indieswebs.in/demostore/api/soap/?wsdl=1";
到
相关的:
希望这对其他人有所帮助~我们在这类应用上做了很多工作,我们刚刚为Android和iOS开源了一个SDK,以简化与Magento API的连接。也许它可以帮助您进行开发,或者为您提供如何解决此问题的想法,因为我们也在使用ksoap进行SOAP通信:您在哪个java版本上编译?您的URL之间似乎有无效空格“?wsdl=1”@vipul:谢谢回复。我正在使用jdk7,但我不认为这是版本问题。@Rajesh:谢谢回复。Url是正确的。发帖时出现了空间问题,但我对其进行了编辑。您可以通过给定的Url检查webservice的响应。谢谢回复。我尝试了您的解决方案。它正在用于获取会话Id,但在中的第40行获取了会话Id之后在我调用“customerCustomerList”的代码中,我得到了与“XMlpullParser异常”相同的错误,但这次我得到了:org.xmlpull.v1.XmlPullParserException:expected:END_TAG{}Body(在java.io中的位置:END_TAG@2:236)。InputStreamReader@44f07860)您好,如果我将方法名称更改为“resources”然后它给了我api v1的响应,但对于api V2,我无法使用调用方法得到响应。我已经读到,我不能使用api V2的调用方法,我必须直接使用方法,但我不知道如何直接使用方法。如果你理解或知道任何事情,请给我回复。谢谢…你能帮助我,因为我也在开发同一类型的应用程序,出现与您上述描述相同的错误。我已浏览了上述链接,但不了解任何内容。请帮助我。嘿,伙计。有疑问。请在联机时给我留言。Bye我想确认我们可以使用Magento控制器中存在的方法吗站点??否则我们必须进行XMLRPC api给出的正式调用……以及……我们可以获取产品的图像以显示在我们的Android布局中吗……如何获取它们以及如何保存它们??如果你教我这么多??我想可能你不能直接使用magento站点控制器中的方法。并且你可以使用XMLRPC获取图像. 有一个方法catalog\u product\u attribute\u media.list.May it helpsOk..获取后,如何显示..我的意思是在哪里存储该图像以及如何存储它们??
private static final String URL ="http://indieswebs.in/demostore/api/soap";