2011-03-24 62 views
3

我在處理webservices時使用k2SOAP for Android。SOAP xml返回 - Android

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 web服務一起工作。但是w3c返回一個字符串作爲這個Web服務返回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結果中獲取數據? Web服務信息有空有點可能,但我的問題仍然是一樣的。

+0

您好Joakim,你有沒有找到任何方法來解析這種類型的響應...如果是這樣,請提供一些幫助...是否有可能使用任何本機解析器的android? – 2011-06-30 12:04:42

+0

還是沒有回答,Sry Nandagopal T! – 2011-08-28 09:52:47

+0

嗨,Joakim,Hurray ....我找到了解決方案夥伴! – 2011-09-10 13:55:55

回答

4

兩件事情你需要改變

1)添加上述"httpTransport.call(SOAP_ACTION, soapEnvelope);"

2)String resultString = result.toString();

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

符合下列一個

String resultString=httpTransport.responseDump;

替換上面的行

這將返回xml格式的響應字符串

+0

該解決方案對我無效。我有同樣的問題。信息即將如上,但不是xml格式。任何額外的幫助? – Hasanur 2012-09-18 10:14:29

+0

您可能正在使用「SoapObject results =(SoapObject)envelope.bodyIn;」獲取文件。使用 HttpTransportSE ht = getHttpTransportSE(); ht.responseDump; 和文件應該以XML格式出來。 – Gene 2014-07-02 22:12:18

0

試試這個WAy。

try { 

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


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

提供的答案不適用於我,而是線條波紋管爲我工作。試試下面的線,希望這會給你的XML標籤數據,

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

這將打印已經由Web服務返回完整的XML文件。