簡體   English   中英

在Android中浸泡Web服務的請求和響應?

[英]Soap web services request and response in Android?

我是一個非常新的Android Soap Web服務,我了解一些使用Ksoap2在Android中使用Soap Web服務的知識,為此,我編寫了以下代碼:通過使用kso​​ap2.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

也許您的代碼沒有錯...

在意識到我沒有將客戶指向我的服務后,我解決了XMLPullParser異常。 它期望能夠使用SOAP響應和請求,但是看到了wsdl。 弄清楚這很棘手。 我不確定您的System.err(1668)是什么,但是我建議您這樣做。

下載並附加android-ksoap2源代碼,以便您可以調試進入(F5)以查看在調試ksoap2軟件包中出現錯誤的位置。

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

安裝並運行免費的SoapUI來測試Web服務,並找出正確的Action,方法,URL和名稱空間,因為如果您的代碼正常,則很可能是它們的問題。 這段介紹性視頻的前2分鍾是我測試服務所需要的。

最后,用另一種語言編寫一個簡單的客戶端-將Web參考添加到我的Web服務項目后,我發現在VB.NET Express中很容易做到。 (這使我在SoapUI的幫助下使我的wsdl WS-I兼容)

祝您找到解決方案的好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM