android Webservice開發的時候一般情況下大家接受webservice服務器返回值的時候都是使用
SoapObject soapObject = (SoapObject) envelope.getResponse();這個來接受返回來的值,但這種方法往往會產生java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive這樣的錯誤。
根據 測試和使用,在服務器端返回值是String類型的數值的時候使用SoapObject soapObject = (SoapObject)
envelope.getResponse();和 SoapObject result = (SoapObject)envelope.bodyIn;這兩種方法來接受值都會報出
java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive這樣的錯誤。 我們可以使用 Object object =
envelope.getResponse();就可以解決這種錯誤。
或者
org.ksoap2.serialization.SoapPrimitive soapPrimitive =(SoapPrimitive) envelope.getResponse();
tvResult.setText(soapPrimitive.toString());
如果服務器返回值的類型是byte[] 的時候,使用Object object = envelope.getResponse();和SoapObject result = (SoapObject)
envelope.bodyIn;都不會發生錯誤現象,但是在使用Object object = envelope.getResponse();取回來的值在使用base64進行解碼和編碼的時候會報出錯誤。
如果使用SoapObject result = (SoapObject)envelope.bodyIn;就可以完整的將byte[]進行解碼和編碼
原文地址:
http://blog.sina.com.cn/s/blog_519d338501011o2w.html