0
我有一個soap web服務和一個android應用程序的調用服務。應用程序始終有效,但在上次webservice更新後,出現了問題。 web服務的更新僅用於刪除一些未使用的服務。其他代碼未被修改。 我的Android應用程序中使用的AsyncTask來調用服務,並取回結果:Ksoap響應解析錯誤上的矢量
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;
}
,但我得到了序貫錯誤:
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()方法就行了。
有什麼不對?