您的位置:首页 > 移动开发 > Objective-C

WebService传输SoapObject数据出现 org.ksoap2.serialization.SoapObject cannot be cast to java.util.Vector的问题

2015-05-29 16:35 274 查看
在很多地方都需要使用到WebService服务器,在最近做的一个项目中也是用到webService服务器,由于第一次开发web服务器,很多都不懂,都是找的网上的例程,一开始一切都很顺利,数据上传过程中是没有问题的,但是在下载过程中却遇到了一个很大的问题。

try {
se.call(soapAction, envelope);
//步骤8:获取从互联网返回的结果
if(envelope.getResponse() != null)
{
Object resout = envelope.getResponse();
System.out.println("result----" + resout.toString());
System.out.println("result----" + resout.getClass());
System.out.println(resout instanceof Vector);
//解析集合resoult
@SuppressWarnings("unchecked")
Vector<SoapObject> vec = (Vector<SoapObject>) resout;
System.out.println("vec--" + vec);
//循环显示
StringBuffer buffer = new StringBuffer();
for(SoapObject soapObject : vec)
{
buffer.append(soapObject.getProperty("patient_phone")+"_");
buffer.append(soapObject.getProperty("advice")+"#");
}
在运行到Vector<SoapObject> vec = (Vector<SoapObject>) resout;的时候一直会报一个类型转换错误。



这个问题一直困扰了很多天,一直不知道是什么问题,但是在另外一台服务器上面下载竟然又是正常的(两台服务器的代码一模一样),两台服务器都能返回数据,但是就是其中一台会报出类型转换错误。

下面是从服务器收到的数据。

第一台服务器,转换正常

result----[anyType{advice=20,0,500,0,60,0,50,0,25,400; patient_phone=18875208558; }, anyType{advice=67,0,560,0,70,0,70,0,50,654; patient_phone=13548263528; }]
第二台服务器,转换报错

result----anyType{advice=20,0,500,0,60,0,50,0,25,400; patient_phone=18875208558; }
然后注意到第一个返回的数据有一个[],然而第二台却没有,是不是因为[]的问题,然后就想着向服务器再发一台数据,跟第一台服务器一样,问题竟然解决了,不会报类型转换错误。

最后发现要下载数据的话,服务器里面的数据不能只有一条,一条数据必定报错,两条数据及以上,则正常!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: