2

我不知道如何在将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() 中传递的这个响应实际上是一个肥皂对象。任何人都可以告诉我如何将我从 transport.responseDump 返回的值转换为肥皂对象,以便我可以将它传递给 parse() 方法吗?

任何线索或链接都会有所帮助。任何帮助将不胜感激。

4

1 回答 1

1

您可以使用“bodyIn”而不是“getResponse”

httpTransport.call(SOAP_ACTION, soapEnvelope);

利用

SoapObject result = (SoapObject) soapEnvelope.bodyIn;
UserDefined resultVariable = new UserDefined(j);

UserDefined 构造函数应该能够处理这个问题。

如果您期望的对象是用户定义的对象,您应该使用 kvmserializable 来实现它。你可以在这里找到一些例子。

KSoap2 和 KvmSerializable - 如何发送复杂的对象,如 Stringarrays

于 2013-07-15T08:14:30.740 回答