首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向量上的Ksoap响应解析错误

向量上的Ksoap响应解析错误
EN

Stack Overflow用户
提问于 2013-10-12 00:44:09
回答 1查看 1.5K关注 0票数 0

我有一个soap webservice和一个用于调用服务的android应用程序。应用程序总是可以工作的,但在上一次网络服务更新之后,出现了一些问题。webservice的更新只是为了删除一些未使用的服务。其他代码未被修改。我的安卓应用程序使用AsyncTask调用服务并返回结果:

代码语言:javascript
运行
复制
public class DownloadDataTask extends AsyncTask<Void, Void, Vector<SoapObject>> {
private static String METHOD_NAME = "getData";
private static String SOAP_ACTION = "http://example.com/getData";
private static String URL = "http://arduino-data-server.appspot.com/dataserver";
private static String NAMESPACE = "http://example.com/";

@SuppressWarnings("unchecked")
@Override
protected Vector<SoapObject> doInBackground(Void... arg0) {
    try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        androidHttpTransport.call(SOAP_ACTION, envelope);
        Vector<SoapObject> result = (Vector<SoapObject>) envelope.getResponse();

        return result;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }
    return null;
}

但是我得到了后续的错误:

代码语言:javascript
运行
复制
10-11 18:36:25.063: E/AndroidRuntime(9250): FATAL EXCEPTION: AsyncTask #1
10-11 18:36:25.063: E/AndroidRuntime(9250): java.lang.RuntimeException: An error occured while executing doInBackground()
10-11 18:36:25.063: E/AndroidRuntime(9250):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at java.lang.Thread.run(Thread.java:841)
10-11 18:36:25.063: E/AndroidRuntime(9250): Caused by: java.lang.ClassCastException: org.ksoap2.serialization.SoapObject cannot be cast to java.util.Vector
10-11 18:36:25.063: E/AndroidRuntime(9250):     at com.example.soapclient.DownloadDataTask.doInBackground(DownloadDataTask.java:49)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at com.example.soapclient.DownloadDataTask.doInBackground(DownloadDataTask.java:1)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-11 18:36:25.063: E/AndroidRuntime(9250):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-11 18:36:25.063: E/AndroidRuntime(9250):     ... 4 more

其中,第49行是我调用getResult()方法的行。

怎么了?

EN

回答 1

Stack Overflow用户

发布于 2013-10-24 01:48:14

原因很清楚:

代码语言:javascript
运行
复制
    Caused by: java.lang.ClassCastException: org.ksoap2.serialization.SoapObject 
cannot be cast to java.util.Vector

在此行中,您不能将结果SoapObject转换为Vector值:

代码语言:javascript
运行
复制
Vector<SoapObject> result = (Vector<SoapObject>) envelope.getResponse();

试试这个:

代码语言:javascript
运行
复制
SoapObject result = (SoapObject) envelope.getResponse();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19323260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档