Android 5.0 版本使用ksoap2连接webservice报java.lang.ClassCastException

    使用的手机为小米2s,最近升级了系统,Android版本为5.0.2,使用ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar这个jar包来访问webservice。之前运行没有问题的程序在这一句报了E/AndroidRuntime(1071): java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject异常。

    SoapObject detail = (SoapObject) envelope.bodyIn;

     原因是因为连接webservice失败,所以传回的对象不是SoapObject而是SoapFault,当然会类型转换失败,所以在这句无论怎么类型转换和异常处理都是治标不治本。

     在我的项目中,最终的解决方法是把ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar使用jarjar.jar工具将里面的包名进行重命名,可能原因是新的系统里面已经集成了这个jar包,造成了某种冲突吧(没深入去研究^_^)。总之在我的机器上,重命名jar包的包名可以解决此异常。

    jarjar.jar工具使用说明:

    新建rules.txt,内容为

    rule org.ksoap2.** org.myksoap2.@1

    就是将所有的org.koap2改成org.myksoap2,可以自己起新的包名。

    将rules.txt、jarjar.jar、ksoap2-android-assembly-3.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值