5

androidからSoapを使用してmagentoapiを呼び出そうとしていますが、XMLpullparser例外が発生します。ksoapライブラリを使用しています。Googleで検索しましたが、解決策が見つかりません。以下は私のコードです。

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 }

以下はスタックトレースです。

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) 

私がこのエラーに本当に落ち込んでいるのを助けてください。前もって感謝します

4

4 に答える 4

6

URLからサフィックス「?wsdl」を削除してください。これが誰かに役立つことを願っています〜

于 2012-12-04T08:25:56.080 に答える
3

変化する:

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

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

関連している:

于 2012-06-25T15:02:18.560 に答える
1

問題を解決しました。完全なコードを変更し、SOAPを使用する代わりにXMLRPCを使用しています。http: //code.google.com/p/android-xmlrpc/にXmLRPCライブラリがあり、使用方法の例もあります。このライブラリ。

これは、Androidでこの応答を解析する方法のリンクですhttp://inchoo.net/mobile-development/android-development/parsing-the-xmlrpc-webservice-response-in-android/

これが誰かを助けることを願っています。

お返事ありがとうございます。

于 2012-06-28T05:05:13.860 に答える
1

私たちはこの種のアプリに多くの作業を行っており、MagentoのAPIとの接続を容易にするために、AndroidおよびiOS用のSDKをオープンソース化したところです。また、SOAP通信にもksoapを使用しているため、開発に役立つか、この問題を解決する方法についてのアイデアが得られます:http: //github.com/agilemonkeys/meets-android

于 2014-03-07T22:08:53.970 に答える