0

私は非常に新しい Android ソープ Web サービスです。Ksoap2 を使用して Android でソープ Web サービスを使用することについてある程度の知識があります。そのために、ksoap2.jar を使用して、WSDL ファイルから名前空間とメソッド名を取得しました。

package com.soapwebservices.pack;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class SampleWSExampleActivity extends Activity {
    private static final String TAG = null;
    /** Called when the activity is first created. */
      final String NAMESPACE = "urn:sap-com:document:sap:soap:functions:mc-style";
         final String URL = "http://***************:8000/sap/bc/srt/wsdl/srvc_14DAE9C8D79F1EE196F1FC6C6518A345/wsdl11/allinone/ws_policy/document?sap-client=800&sap-user=********&sap-password=*******";
          final String METHOD_NAME = "Z_GET_CUST_GEN";
         final String SOAP_ACTION = "urn:sap-com:document:sap:soap:functions:mc-style/Z_GET_CUST_GEN";
      //    private static final String[] sampleACTV = new String[];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);        
        SoapSerializationEnvelope envelope = 
            new SoapSerializationEnvelope(SoapEnvelope.VER11);

        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;

            System.out.println("THE SOAP RESPONSE"+resultsRequestSOAP);

            //ACTV.setHint("Received :" + resultsRequestSOAP.toString());
        } catch (Exception e) {


            e.printStackTrace();
        }
    }
}  

when i run this program i got the following Exception but in some examples i got the success please see once and let me know where i am doing the mistake 


08-20 15:21:40.296: WARN/System.err(1668): org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/wsdl/}wsdl:definitions targetNamespace='urn:sap-com:document:sap:soap:functions:mc-style'>@1:686 in java.io.InputStreamReader@4052f658) 

How can handle that exc
4

1 に答える 1

0

多分あなたのコードには何も問題はありません...

クライアントを自分のサービスに向けていないことに気付いた後、XMLPullParser 例外を解決しました。SOAP 応答と要求を使用できると予想されていましたが、wsdl が表示されていました。理解するのは難しかったです。あなたの System.err(1668) が何であるかはわかりませんが、これが私があなたに提案することです。

android-ksoap2 ソース コードをダウンロードして添付します。これにより、呼び出し (F5) にステップ インして、デバッグ中に ksoap2 パッケージでエラーが発生した場所を確認できます。

https://github.com/mosabua/ksoap2-android/downloads

無料の SoapUIをインストールして実行し、Web サービスをテストし、正しいアクション、メソッド、URL、および名前空間を正確に把握します。コードに問題がない場合は、それらに問題がある可能性が高いためです。この紹介ビデオの最初の 2 分間だけで、サービスをテストすることができました。

最後に、単純なクライアントを別の言語で作成します。Web サービスのプロジェクトに Web 参照を追加すると、 VB.NET Expressで簡単に作成できることがわかりました。(それは、私の wsdl WS-I 準拠にするために SoapUI の助けを借りて私に教えてくれました)

頑張って解決策を見つけてください。

于 2012-08-22T02:48:53.753 に答える