Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Android使用SOAP调用MagentoAPI时出现XMLPull解析器异常_Android_Magento_Soap_Ksoap2 - Fatal编程技术网

从Android使用SOAP调用MagentoAPI时出现XMLPull解析器异常

从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

我试图使用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.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";

相关的:


我解决了我的问题。我更改了完整的代码,现在使用的不是SOAP,而是XMLRPC。上有XMLRPC库,还有如何使用该库的示例

这是如何在android中解析此响应的链接

希望这对别人有帮助

谢谢大家的回复

从URL中删除后缀“?wsdl”,它对我有用。
希望这对其他人有所帮助~

我们在这类应用上做了很多工作,我们刚刚为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";