2012-04-09 3 views
1

Android 앱에서 사용하고자하는 Java 코드를 사용하여 SOAP 서비스에 액세스하려고하지만 XmlPullParserException을 얻고 있습니다.KSOAP2 API를 사용하여 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 [email protected]) 

나는 모든 관련 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); 

       } 
      } 
+0

안녕하세요, 저는 같은 문제로 달리고 있습니다.이 문제에 대한 해결책을 찾았습니까? – iDroid

답변

0

편집 아래의 코드 라인에 따라 UR 코드 ... 추가

private static String SOAP_ACTION = "http://InputMessageNamespace/Process Definition";  
       private static String METHOD_NAME = "EmployeeDetailsOperation";  
       private static String NAMESPACE = "http://InputMessageNamespace"; 
+0

SOAP ACTION을 사용하여 NAMESPACE를 추가하면 동일한 오류 XmlPullParserException이 발생합니다. – user1315030

+0

.Net WebService를 사용하고 있습니까? – himanshu

+0

아니요. TIBCO 웹 서비스입니다. – user1315030

0

시도 "/"URL 문자열의 끝에 :

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

대신 SOAP_ACTION의 NAMESPACE + METHOD_NAME을 (를) 사용하십시오.

+0

URL 끝에 "/"를 추가하려고 시도했지만 IOException이 발생했습니다. – user1315030

+0

SOAP ACTION을 사용하여 NAMESPACE를 추가하면 동일한 오류가 발생합니다. XmlPullParserException – user1315030

1

같은 문제가 있는데 SoapEnvelope 버전과 관련이 있습니다. 나는 그것이 어쩌면 당신은 VER12

에 VER10에서 세 가지가 다른 버전을 테스트 할 수 있습니다
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

근무 (이미 사용하고) VER11로 변경하면 코드 줄에서

나는 VER12를 사용했다
관련 문제