2011-03-24 6 views
3

webservices를 다룰 때 Android 용 k2SOAP을 사용하고 있습니다.SOAP xml 대가로 - 안드로이드

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
request.addProperty("ProjectID", 1); 

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
soapEnvelope.dotNet = true; 
soapEnvelope.setOutputSoapObject(request); 

HttpTransportSE httpTransport = new HttpTransportSE(URL); 

try { 

    httpTransport.call(SOAP_ACTION, soapEnvelope); 
    SoapObject result = (SoapObject) soapEnvelope.getResponse(); 
    String resultString = result.toString(); 
} 

w3 웹 서비스에서 작동하므로 코드에 아무런 문제가 없음을 알고 있습니다. 그러나 w3c는이 웹 서비스가 XML을 반환하는 답변으로 문자열을 반환합니다. 내가 로그에 보여 때 내가 돌아올 대답은 다음과 같습니다 : 기본적으로 많은 소음이

anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType{element=an yType{complexType=anyType{sequence=anyType{element=anyType{}; 
element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; }; }; }; }; }; 
unique=anyType{selector=anyType{}; field=anyType{}; }; }; }; diffgram=anyType{}; } 

을하고 나는이에서 정보를 얻는 방법에 확실하지 않다거나 내가 그것을 구문 분석하는 방법 또는 . 나의 궁극적 인 목표는 내가 얻은 정보를 로컬 데이터베이스에 저장하는 것이지만, 나는 문자열에서 정보를 얻는 방법을 모르기 때문에 데이터베이스에 정보를 넣는 것을 모른다.

그래서 내가 원하는 것은 어떻게 든 정보를 구문 분석하고 내가 이미 클래스를 구축 한 로컬 데이터베이스에 넣는 것입니다. SoapObject 결과에서 데이터를 얻으려면 어떻게해야합니까? 웹 서비스 정보가 비어있을 가능성이 있지만 내 질문은 여전히 ​​동일합니다.

+0

안녕하 아아킴,이 유형의 응답을 구문 분석 할 수있는 방법을 찾았습니까? 그렇다면 몇 가지 도움을주세요 ... 안드로이드의 기본 파서를 사용할 수 있습니까? –

+0

아직 대답이 없습니다, Sry Nandagopal T! –

+0

안녕하아이 Joakim, Hurray .... 나는 해결책 친구를 찾았습니다! –

답변

4

두 가지 당신은 "httpTransport.call(SOAP_ACTION, soapEnvelope);"

2) String resultString = result.toString();

이상이 "httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");"

줄을 추가)

1

을 변경 한

String resultString=httpTransport.responseDump;

을 다음과 같이 위의 라인을 교체해야

이것은 응답을 XML 형식의 문자열로 반환합니다.

+0

이 솔루션은 저에게 적합하지 않았습니다. 나는 똑같은 문제가 있었다. XML 형식이 아닌 위와 같은 정보가 나타납니다. 추가 도움이 필요하십니까? – Hasanur

+0

아마도 "SoapObject results = (SoapObject) envelope.bodyIn;" 파일 가져 오기. 사용 HttpTransportSE ht = getHttpTransportSE(); ht.responseDump; 파일이 XML 형식으로 나와야합니다. – Gene

0

이 WAY를 사용해보십시오.

try { 

    httpTransport.call(SOAP_ACTION, soapEnvelope); 
    SoapObject result = (SoapObject) soapEnvelope.getResponse(); 


String element = ((SoapObject)result.getPropertySafely("schema")).getPropertySafely("element").toString(); 
2

제공되는 대답은 저에게 효과가 없었습니다. 다음 줄을 시도

httpTransport.debug=true; 
httpTransport.call(SOAP_ACTION, soapEnvelope); 
String ss=httpTransport.responseDump; 
Log.d("Result --- ", ss); 

웹 서비스에서 반환 된 전체 XML 파일을 출력 할 것이다,이 XML 태그로 당신에게 데이터를 제공 바랍니다.