SOAP xml返回 - Android

问题描述:

我在处理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

两件事情你需要改变

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

试试这个WAy。

try { 

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


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

提供的答案不适用于我,而是线条波纹管为我工作。试试下面的线,希望这会给你的XML标签数据,

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

这将打印已经由Web服务返回完整的XML文件。