1

Androidアプリで使用したい以下のJavaコードを使用してSOAPサービスにアクセスしようとしていますが、を取得していXmlPullParserExceptionます。

org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <{http://www.w3.org/2003/05/soap-envelope}SOAP-ENV:Envelope>@1:114 in java.io.InputStreamReader@4a65e0)

XmlPullParserExceptionに関連するすべてのタグをチェックしました。コードを修正するのを手伝ってください。

        import java.io.IOException;

        import org.ksoap2.SoapEnvelope;
        import org.ksoap2.SoapFault;
        import org.ksoap2.serialization.SoapObject;
        import org.ksoap2.serialization.SoapPrimitive;
        import org.ksoap2.serialization.SoapSerializationEnvelope;
        import org.ksoap2.transport.HttpTransportSE;
        import org.xmlpull.v1.XmlPullParserException;

            public class SoapClientClass {

                private static String SOAP_ACTION = "/Process Definition";       
                private static String METHOD_NAME = "EmployeeDetailsOperation";       
                private static String NAMESPACE = "http://InputMessageNamespace";       
                private static String URL ="http://10.213.45.05:5026/EmployeeService";    

                public static void main(String[] args)
                {
                    webserviceCall();    
                }

                private static void webserviceCall() {
                    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
                    // Pass parameters as Key value pair to URL 
                    request.addProperty("EmployeeId", "121"); 

                    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                    envelope.setOutputSoapObject(request);
                    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                    try {
                        androidHttpTransport.call(SOAP_ACTION, envelope);
                    } catch (IOException e) {
                        System.out.println("IOException");          
                        e.printStackTrace();
                    } catch (XmlPullParserException e) {
                        System.out.println("XmlPullParserException");
                        e.printStackTrace();
                    }
                    SoapPrimitive result = null;
                    try {
                        result = (SoapPrimitive)envelope.getResponse();
                    } catch (SoapFault e) {
                        System.out.println("SoapFault");
                        e.printStackTrace();
                    }

                    //to get the data         
                    String resultData = result.toString();
                    System.out.println("Result as String: \n"+resultData);

                }
            }
4

4 に答える 4

1

同じ問題に遭遇しましたが、それは SoapEnvelope バージョンに関連していました。

このコード行では、VER12 を VER11 に変更したときに使用していました (既に使用しています)。

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

多分あなたは他のバージョンをテストすることができます VER10 から VER12 までの 3 つがあります

于 2013-07-30T13:16:19.863 に答える
0

URL 文字列の末尾に「/」を追加してみてください。

private static String URL ="http://10.213.45.05:5026/EmployeeService/";

SOAP_ACTION の代わりに NAMESPACE + METHOD_NAME を使用します

于 2012-04-09T21:51:26.793 に答える
0

以下のコード行に従ってコードを編集します...

private static String SOAP_ACTION = "http://InputMessageNamespace/Process Definition";       
                private static String METHOD_NAME = "EmployeeDetailsOperation";       
                private static String NAMESPACE = "http://InputMessageNamespace";
于 2012-04-09T09:11:25.557 に答える