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[]進行解碼和編碼