2012-01-16 10 views
1

私は、KSOAP2-AndroidでこのXmlPullParserExceptionの原因を絶えず探しています。 "androidHttpTransport.call(SOAP_ACTION、エンベロープ);"SAP WSDL WebServiceを使用している場合のXmlPullParserException

  String NAMESPACE = "urn:sap-com:document:sap:soap:functions:mc-style"; 
      String METHOD_NAME = "ZFanTestWs"; 
      String SOAP_ACTION = NAMESPACE + "/" + METHOD_NAME; 
      String URL = "http://xxxx.xxx.xx:8000/sap/bc/srt/wsdl/bndg_xxx/wsdl11/allinone/standard/rpc?sap-client=xxx"; 

      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

      PropertyInfo pi = new PropertyInfo(); 
      pi.setName("arg0"); 
      pi.setValue(42); 
      pi.setType(PropertyInfo.INTEGER_CLASS); 
      request.addProperty(pi); 

      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.setOutputSoapObject(request); 

      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
      androidHttpTransport.debug = true; 

      try 
      { 
       androidHttpTransport.call(SOAP_ACTION, envelope); 
       SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope.getResponse(); 
       result = resultsRequestSOAP.toString(); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

例外がで発生し:ここ コードであります

<wsdl:definitions targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"><wsdl:documentation><sidl:sidl/></wsdl:documentation><wsdl:types><xsd:schema attributeFormDefault="qualified" targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"><xsd:element name="ZFanTestWs"><xsd:complexType><xsd:sequence><xsd:element name="IvImporting" type="xsd:int"/></xsd:sequence></xsd:complexType></xsd:element><xsd:element name="ZFanTestWsResponse"><xsd:complexType><xsd:sequence><xsd:element name="EvExporting" type="xsd:int"/></xsd:sequence></xsd:complexType></xsd:element></xsd:schema></wsdl:types><wsdl:message name="ZFanTestWs"><wsdl:part name="parameters" element="tns:ZFanTestWs"/></wsdl:message><wsdl:message name="ZFanTestWsResponse"><wsdl:part name="parameter" element="tns:ZFanTestWsResponse"/></wsdl:message><wsdl:portType name="Z_FAN_TEST_WS"><wsdl:operation name="ZFanTestWs"><wsdl:input message="tns:ZFanTestWs"/><wsdl:output message="tns:ZFanTestWsResponse"/></wsdl:operation></wsdl:portType><wsdl:binding name="DEFAULT" type="tns:Z_FAN_TEST_WS"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/><wsdl:operation name="ZFanTestWs"><soap:operation soapAction="" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="Z_FAN_TEST_WS"><wsdl:port name="DEFAULT" binding="tns:DEFAULT"><soap:address location="http://xxxx.xxx.xx:8000/sap/bc/srt/rfc/sap/z_fan_test_ws/xxx/z_fan_test_ws/default"/></wsdl:port></wsdl:service></wsdl:definitions> 

それは、パラメータとして整数を受け取り、それを返します。

HttpTransportSEのresponeDumpはまさに私の生成されたWSDLのように見えます。 NAMESPACEとSOAP_ACTIONの文字列は正しいですか? あなたのアイデアを教えてください。ありがとう。

編集:スタックトレース

01-17 10:12:11.090: W/System.err(555): 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:429 in [email protected]) 
01-17 10:12:11.180: W/System.err(555): at org.kxml2.io.KXmlParser.require(KXmlParser.java:2046) 
01-17 10:12:11.190: W/System.err(555): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:127) 
01-17 10:12:11.210: W/System.err(555): at org.ksoap2.transport.Transport.parseResponse(Transport.java:100) 
01-17 10:12:11.221: W/System.err(555): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195) 
01-17 10:12:11.241: W/System.err(555): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95) 
01-17 10:12:11.260: W/System.err(555): at webservice.test.WebServiceTestActivity$ServiceCall.doInBackground(WebServiceTestActivity.java:111) 
01-17 10:12:11.281: W/System.err(555): at webservice.test.WebServiceTestActivity$ServiceCall.doInBackground(WebServiceTestActivity.java:1) 
01-17 10:12:11.292: W/System.err(555): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
01-17 10:12:11.310: W/System.err(555): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
01-17 10:12:11.331: W/System.err(555): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
01-17 10:12:11.340: W/System.err(555): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
01-17 10:12:11.361: W/System.err(555): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
01-17 10:12:11.371: W/System.err(555): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
01-17 10:12:11.390: W/System.err(555): at java.lang.Thread.run(Thread.java:856) 
+0

例外のスタックトレースはあなたに通知します.. –

+0

残念ながら、スタックトレースはあまり役に立ちません - 私はそれを上に追加しました。 正しく受信したWSDLに開始タグが何とか表示されません。 – user1152221

+0

あなたはそれにデバッグし、何が起こっているか見る必要があります。それはおそらく順不同で、すべてが混ざり合ってしまいます。あなたが何か間違っていると思うようになる一つのことは、レスポンスがwsdlのように見えることです。 –

答えて

1

私は完全に間違っているKSOAPにWSDLファイルのURLを提供してきました。 あなたは、WSDLファイルにリストされているSOAPサービス自体のURLを供給する必要があります。

<soap:address location="http://xxxx.xxx.xx:8000/sap/bc/srt/rfc/sap/z_fan_test_ws/xxx/z_fan_test_ws/default"/> 

文字列SOAP_ACTION = NAMESPACE + "/" + METHOD_NAME。私の場合は が問題なく動作します。

あなたの答えはManfred MoserとJPriestに感謝します!

0

あなたのSOAPActionは以下のように空の文字列、必要があります。

String SOAP_ACTION = ""; 
関連する問題