2014-11-28 4 views
0

SoapObject은 SOAP 기반 웹 서비스의 응답입니다.Android : XML 데이터를 전달하는 SoapObject를 InputStream 객체로 변환하는 방법이 있습니까?

www.soapclient.com에서 웹 서비스를 테스트했기 때문에 XML 데이터가 있다는 것을 알고 있습니다.

이제 응답을 구문 분석하려면 XMLPullParser을 사용하고 싶습니다. XMLPullParserInputStream이므로 SoapObjectInputStream으로 변환 할 수 있습니까?

+1

과 관련,

두 번째 방법은 HttpTransportSE에서 reponseDump을 구문 분석하는 것입니다하지만 테러의 일종 ? –

답변

1

parseBody 메서드를 대체하여 봉투 클래스를 다시 정의 할 수 있습니다. ! 여기 상속 클래스의 예입니다 : 조건이 동안 ((이벤트 유형 "루프 == XmlPullParser.END_TAG & & 파서가 이유의 SOAPEnvelope는"몸 "의 종료 태그를 필요로

public class SSEnv extends SoapSerializationEnvelope 
{ 
    public void parseBody(XmlPullParser parser) throws IOException, XmlPullParserException{ 

     //Yes! its modified code snipet from android dev page :) 
     int eventType = parser.getEventType(); 

     while (!(eventType == XmlPullParser.END_TAG && parser.getName().equalsIgnoreCase("body"))) { 

      if(eventType == XmlPullParser.START_DOCUMENT) { 
       System.out.println("Start document"); 
      } else if(eventType == XmlPullParser.START_TAG) { 
       System.out.println("Start tag "+parser.getName()); 
      } else if(eventType == XmlPullParser.END_TAG) { 
       System.out.println("End tag "+parser.getName()); 
      } else if(eventType == XmlPullParser.TEXT) { 
       System.out.println("Text "+parser.getText()); 
      } 
      eventType = parser.next(); 
     } 
    } 
} 

가 구문 분석 방법을 기억 이잖아. getName(). equalsIgnoreCase ("body"))) ". 그리고 getRequest와 bodyIn 이후의 ofcourse는 그 변경 후에 null이됩니다.() 대신 SOAP getProperty에를 사용하여 응답 데이터를 준비 얻을 XML로 SOAP 응답을 변환 완 이유)

종류 마르신