【发布时间】:2012-06-15 09:52:54
【问题描述】:
我正在制作一个从 Web 服务(实现 Soap)请求数据的应用。
正在查看此内容的人请在 cmets 中发表疑问...我没有得到任何答复,如果有任何疑问,请询问我,我真的需要帮助,我被困住了!!
所以要发出请求,我必须使用 ksoap 库.. Web 服务被编码为返回 XML 类型的响应。当 Web 服务本身在浏览器上进行测试时,它会显示如下结果:
?xml version="1.0" encoding="utf-8" ?>
- <SOBKeyList>
- <Key>
<value>12686</value>
</Key>
- <Key>
<value>16238</value>
</Key>
- <Key>
<value>26978</value>
</Key>
</SOBKeyList>
显然是一个 XML 文件...
However 当我使用这个代码得到结果时:
public String getXmlFromUrl(String url) {
// TODO Auto-generated method stub
String xml = null;
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);
PropertyInfo pi = new PropertyInfo();
pi.setName("fkey");
pi.setValue(0);
pi.setType(Integer.class);
request.addProperty(pi);
pi = new PropertyInfo();
pi.setName("tkey");
pi.setValue(999999);
pi.setType(Integer.class);
request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(url);
Object response = null;
try {
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
xml = response.toString();
Log.d("xml:", xml);
} catch (SoapFault e) {
// TODO Auto-generated catch block
Log.d("Soap Fault", e.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d("IOexception", e.toString());
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
Log.d("XmlPullParserException", e.toString());
}
return xml;
}
它返回一个 嵌套的 SOAP 结构 确认 由我制作的日志条目 (Log.d("xml:", xml);)
对应的 LogCat 条目是:(我已经对其进行了格式化,以使其成为 SOAP 结构的层次结构……)
anyType{
SOBKeyList=anyType{
Key=anyType{value=12686 ; };
Key=anyType{value=16238 ; };
Key=anyType{value=26978 ; };
};
}
我之所以需要 XML,是因为后来我解析字符串以获取 DOM 元素,当传递上述字符串时,它返回以下内容:
org.xml.sax.SAXParseException:意外令牌(位置:TEXT anyType{SOBKeyLi...@1:119 in java.io.StringReader@40ec9c68)
从那以后,我的整个代码也取决于响应是 XML 的事实。
解释我期望 XML 的原因: 现在你可能会问为什么我在没有测试 Web 服务的情况下编写应用程序需要 XML利用 SOAP 结构的代码! -_- 我正在修复中。请帮忙!
【问题讨论】:
标签: android xml soap xml-serialization ksoap2