在转换transport.responseDump
并将字符串(字符串形式的xml数据)返回到ksoap对象时,我无法继续进行。
可能是一些代码片段将帮助我描述我的问题:
synchronized (transportLockObject)
{
transport.debug = true;
String soapAction = TARGET_NAMESPACE+"/"+method;
try {
transport.call(soapAction, envelope);
} catch (SSLHandshakeException she) {
she.printStackTrace();
}
}
System.out.println("Response ----------"+transport.responseDump);
这就是我获取responseDump的方式。我正在保存这个转储,以便以后可以使用(比如当我不想要实际的在线数据用于测试目的或没有连接[无论]时)。 后来我通常做的是
Object response = envelope.getResponse();
//Check if response is available... if yes parse the response
if (response != null)
{
if (myResponse != null)
{
myResponse.parse(response);
}
}
我在parse()中传递的这个响应实际上是一个soap对象。 可以任何正文告诉我如何将从transport.responseDump返回的值转换为soap对象,以便将其传递给parse()方法?
任何线索或链接都会有所帮助。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用“bodyIn”代替“getResponse”
之后
httpTransport.call(SOAP_ACTION, soapEnvelope);
使用
SoapObject result = (SoapObject) soapEnvelope.bodyIn;
UserDefined resultVariable = new UserDefined(j);
UserDefined构造函数应该能够处理这个问题。
如果您的预期对象是用户定义的对象,则应使用kvmserializable实现该对象。你可以在这里找到一些例子。
KSoap2 and KvmSerializable - How to Send complex Objects like Stringarrays