android - java.lang.ClassCastException : org. ksoap2.serialization.SoapPrimitive?

标签 android ksoap2

我正在从我的 Android 客户端应用程序调用 Web 服务。在我尝试显示它时得到响应后,我得到了 ClassCastException。以下是我的代码:

public void onClick(View v) {
  setContentView(R.layout.report);
  SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
  EpcDetails epcdetails=new EpcDetails();
  epcdetails.setEpcId(input_val.getText().toString());

        request.addProperty("id", id
        SoapSerializationEnvelope sse=new SoapSerializationEnvelope(SoapEnvelope.VER11);
        sse.setOutputSoapObject(request);

        sse.addMapping(NAMESPACE, 
        ProductDetailsRequest.ProductDetailsRequest.getSimpleName(),
        ProductDetailsRequest.ProductDetailsRequest);

        sse.implicitTypes=true;
        sse.setAddAdornments(false);
        AndroidHttpTransport aht=new AndroidHttpTransport(URL);

        try 
        {
         aht.call(SOAP_ACTION, sse);
         SoapObject response= (SoapObject) sse.getResponse();
         item_code.setText((CharSequence)(response.getProperty(6)));
         desc.setText((CharSequence) (response.getProperty(5)));
         price.setText(calc_price.toString());

        } catch (IOException e) 
        {
         e.printStackTrace();
        } catch (XmlPullParserException e)
        {
          e.printStackTrace();
       }

我在 item_code.setText((CharSequence)(response.getProperty(6))); 处遇到异常 作为

12-20 19:26:12.864: ERROR/AndroidRuntime(811): FATAL EXCEPTION: main
12-20 19:26:12.864: ERROR/AndroidRuntime(811): java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at com.trueVUE.modules.report.MainSimulation.onClick(MainSimulation.java:123)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at android.view.View.performClick(View.java:2408)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at android.view.View$PerformClick.run(View.java:8816)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at android.os.Handler.handleCallback(Handler.java:587)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at android.os.Looper.loop(Looper.java:123)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at android.app.ActivityThread.main(ActivityThread.java:4627)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at java.lang.reflect.Method.invokeNative(Native Method)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at java.lang.reflect.Method.invoke(Method.java:521)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-20 19:26:12.864: ERROR/AndroidRuntime(811):     at dalvik.system.NativeStart.main(Native Method)

请尽快提出一些解决方案。

问候, 拉胡尔

最佳答案

因为你的webservice返回的类型是String,所以可以这样解决:

Object  response=  sse.getResponse();  

当你的webservice返回值类型是byte[]时,你可以这样做

SoapObject response=(SoapObject)envelope.bodyIn;

关于android - java.lang.ClassCastException : org. ksoap2.serialization.SoapPrimitive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490505/

相关文章:

java - int 值在 ContentObserver 的 onchange 中未更新

安卓汽车 : Media item gets stuck "Getting your selection..." instead of showing controls while playing

android - 如何修复 "program type already present"错误?

android - Ksoap2 类转换异常

java - 将 ksoap2 响应解析为 int 数组

java - ANDROID:将 PreviewCallback 图像保存为字节数组中的 .jpg 会导致文件损坏

android - 按下后退时关闭 AlertDialog

Java:由子字符串生成的字符串不被视为硬编码字符串

php - Android 使用 ksoap 调用 PHP SOAP webservice 失败 : 'procedure ' CheckLogin' not found

android - Android 中使用 ksoap2 的 NTLM 身份验证