我正在使用ksoap2在我的应用程序中使用第三方Web服务。 Web服务返回XML数据。我的搜索告诉我ksoap2不支持xml。
此外,当我在客户端做这样的事情时,
htse.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
它给出了以下异常。
java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
同样,我的搜索告诉我,这是因为返回的数据可能是XML格式,或者是soapObject以外的某种类型。
请建议我如何使用ksoap2在我的客户端使用此Web服务。
注意: - 我使用空字符串作为soapAction,因为在WSDL中它是一个空字符串。
提前谢谢。
答案 0 :(得分:0)
Ksoap确实支持XML。
当你调用envelope.bodyIn时,它会返回SoapObject或SoapFault。 你应该使用下面的代码处理它:
if(envelope.bodyIn instanceof SoapObject)
{
return data;
}
else
throw (SoapFault)envelope.bodyIn;
在你的情况下你得到了soapfault对象。这意味着您的请求不正确或服务器返回您的请求的错误消息。 检查请求参数,因为SOAP对象(SoapSerializationEnvelope ...)中的大多数时间请求值未正确设置。 同样在我看来,soapAction不应该是空的。尝试使用SOAP-Sonar等测试您的WSDL。检查提供成功响应的值。
编辑: 检查请求和响应转储。
httpTransport.call(SOAP_ACTION,envelope);
Log.d(“MyAPP”,“-----------------”+ httpTransport.requestDump +“\ r \ n \ r \ n”+ httpTransport.responseDump);