返回 SOAP xml - Android

2024-05-04

在处理 Web 服务时,我使用适用于 Android 的 k2SOAP。

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 结果中获取数据? 网络服务信息有可能为空,但我的问题仍然是一样的。


你需要改变的两件事

1)添加这个"httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");"

上面的线"httpTransport.call(SOAP_ACTION, soapEnvelope);"

2) String resultString = result.toString();

将上面一行替换为下面一行

String resultString=httpTransport.responseDump;

这将以 xml 格式的字符串返回响应

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回 SOAP xml - Android 的相关文章

随机推荐