1

ksoap2 を使用して、andriod Web サービス プログラムから SOAP Web サービスを利用したいと考えています。そのために、次のコードを書きました。これを Android エミュレーターで実行すると、logcat で応答が得られません。私の Web サービスの戻り値の型は XML file です。

public class SoapWebservicesExampleActivity extends Activity {
    /** 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=*********";

//i am appending the Username and password as URL Parameters.

    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";

// i am getting the method name tns from WSDL file.

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); // set up
        request.addProperty("Input", "1460");
        //  request.addProperty("Langu", "d");

//one property in the webservices 

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // put all required data into a soap
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(URL);
        httpTransport.debug = true;
        try {
            httpTransport.call(SOAP_ACTION, envelope);

// by using call method we can call the services

            SoapObject response = (SoapObject)envelope.getResponse();
            String str = response.getProperty(0).toString();
            System.out.println("theeeeeeeeeee"+str);

//printing the respose here

        }
        catch(SocketException ex){
            ex.printStackTrace();

        } catch (Exception e) {
               e.printStackTrace();
        }
    }

}

しかし、ここでの問題は、ksoap2 jar ファイルを追加しているときにこの例外が発生したことです。

            05-29 15:37:54.403: WARN/System.err(383): 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@40547218)
            05-29 15:37:54.403: WARN/System.err(383):     at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273)
4

2 に答える 2

0

つまり、追加するプロパティ、つまり

request.addProperty("Input", "1460");

不適切です。呼び出している Web メソッドを確認し、パラメーターの数、メソッド名、パラメーターのスペル (大文字と小文字も含む) が適切であることを確認してください。私はいつもこのエラーを受け取ります。これはあなたがそれを修正する方法です。

((上記の解決策が機能しない場合は、Web メソッドも共有してください))

于 2012-05-29T11:24:21.363 に答える
0
    <soap:Header/> 
    <soap:Body> <urn:Z_GET_CUST_GEN> 
    <!--Optional:--> 
    <Input>1460</Input> 
    <!--Optional:-->
     <Langu>d</Langu> 
    <!--Optional:--> 
    <Max></Max> 

これは私の入力および出力xmlです:

バインディング URL

http://************:8000/sap/bc/srt/rfc/sap/z_customer_lookup1/800/z_customer_lookup1/z_customer_lookup1_bind

出力: -

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
   <env:Header/>
   <env:Body>
      <n0:Z_GET_CUST_GENResponse xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
         <ZCustGen>
            <item>
               <Kunnr>0000001460</Kunnr>
               <Name1>C.A.S. Computer Application Systems</Name1>
               <City>Dresden</City>
               <Land>DE</Land>
               <Pstlz>01187</Pstlz>
            </item>
            <item>
               <Kunnr>0000027182</Kunnr>
               <Name1>Johnson Food Center Inc.</Name1>
               <City>Rochester</City>
               <Land>US</Land>
               <Pstlz>14608</Pstlz>
            </item>
            <item>
               <Kunnr>0000301046</Kunnr>
               <Name1>Second Source</Name1>
               <City>ROCHESTER</City>
               <Land>US</Land>
               <Pstlz>14602</Pstlz>
            </item>
         </ZCustGen>
      </n0:Z_GET_CUST_GENResponse>
   </env:Body>
</env:Envelope>

入力をすべての値 (langu,max) に設定して試してみます。それを試したかどうか。

于 2012-05-29T11:37:14.317 に答える