Java 调用Web服务时出错
我已经完成了使用.NETC#开发的asmx,它运行良好 但是当我需要使用JavaAndroid调用时,我发现了一个错误 错误:java.lang.ClassCastException:org.ksoap2.serialization.SoapObject无法强制转换为org.ksoap2.serialization.SoapPrimitive 结果显示在我的asmx上:Java 调用Web服务时出错,java,android,web-services,ksoap2,Java,Android,Web Services,Ksoap2,我已经完成了使用.NETC#开发的asmx,它运行良好 但是当我需要使用JavaAndroid调用时,我发现了一个错误 错误:java.lang.ClassCastException:org.ksoap2.serialization.SoapObject无法强制转换为org.ksoap2.serialization.SoapPrimitive 结果显示在我的asmx上: <customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan
<customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<customerID>1</customerID>
<companyName>ABC</companyName>
<contactName>Jack</contactName>
<customerID>2</customerID>
<companyName>SS Company</companyName>
<contactName>Mary</contactName>
</customer>
如果我使用1)将userType更改为custID,则上述代码正常工作。这是你的错
测试
在这些情况下,ksoap2序列化程序无法将返回的字符串转换为有效的xml字符串
2) 试试这个:
aht.call(SOAP_ACTION, soapEnvelope);
SoapObject resultString = (SoapObject) soapEnvelope.getResponse();
tv.setText(resultString.getPropertyAsString("customerID"));
看起来你必须解析一个复杂的对象。您必须创建一个实现
kvmseriable
接口的Customer
类。看看这个:我已经解决了
SoapObject resultString = (SoapObject) soapEnvelope.getResponse();
String addon = "";
for(int i =0;i<resultString.getPropertyCount();i++)
{
SoapObject array2 = (SoapObject) resultString .getProperty(i);
addon = (addon + "ID = " + array2.getProperty(0).toString() + array2.getProperty(1).toString() + array2.getProperty(2).toString() + "\n");
}
tv.setText(addon.toString());
SoapObject结果字符串=(SoapObject)soapEnvelope.getResponse();
字符串加载项=”;
对于(int i=0;iNAMESPACE
、METHOD\u NAME
和SOAP\u ACTION
)的值是什么?在哪一行出现此错误?抱歉,实际值是custID,不是userType,我只是做了一些更改…请忽略它:)@breceivemail,我不确定,错误在异常catchok,我现在可以获取值。但结果是这样的。“anyType{customerID=Jack Sparrow;companyName=member;contactName=1234;}”如何筛选此项?我只想要数据,我不想要那些“customerID”、“companyName”、“anyType”。。。
SoapObject resultString = (SoapObject) soapEnvelope.getResponse();
String addon = "";
for(int i =0;i<resultString.getPropertyCount();i++)
{
SoapObject array2 = (SoapObject) resultString .getProperty(i);
addon = (addon + "ID = " + array2.getProperty(0).toString() + array2.getProperty(1).toString() + array2.getProperty(2).toString() + "\n");
}
tv.setText(addon.toString());