关于 ksoap2调用 webservice 遇到的一些问题
分类:android随记
拿到了 webservice 接口调用 不算完整的文档
当用 ksoap2 写好代码 ,去调用 webservice 遇到 服务器返回 500 的错误码
解决方案: 可能是 ksoap2的 jar包有问题, 换一个试试(虽然原来用的这个jar是好着的,但是这次做的时候 怎么都是500.网上细细查询后,才说换个 jar包试试,换了后确实好了,可能也跟webservice服务器有关系吧,毕竟第三方)
需要传递的参数中有带 “&” 符号 比如: name,,pwd 2个参数。 但是传入的值中有 “&”
解决方案: 刚开始看到 在webservice页面填是没有问题的。 但是如果要访问传参的话 会需要转义就比如xml中 “<” “>” “&” 都是需要转义的。 最后试了其实是不用转义的,转义反到会出错
3 遇到这样的错误: java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive cannot be cast to org.ksoap2.serialization.SoapObject
解决方案: 其实是在访问的代码中,接收结果的时候一般都是这么写的
//这个来接受返回来的值,但这种方法往往会产生SoapObject soapObject = (SoapObject)envelope.getResponse();
原因就是,在服务器端返回值是String类型的数值的时候
这两种方法来接受值都会报出错
SoapObject result = (SoapObject) envelope.getResponse();SoapObject result = (SoapObject)envelope.bodyIn;
所以接收结果代码要改成:
Object result = (Object) envelope.getResponse();
4 . 遇到错误 org.xmlpull.v1.XmlPullParserException: expected:START_TAG()
解决方案: 这个就在ksoap2 中也是访问代码的部分,一般是会这么写的。 所以这个设置写不对的话会遇到这个错误
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
SoapEnvelope.VER10: 对应的是 SOAP1.0规范 SoapEnvelope.VER11: 对应的是 SOAP1.1规范 SoapEnvelope.VER12: 对应的是 SOAP1.2规范
5 . ksoap2调用webservice 成功, 但是返回结果不对。
解决方案: 这个就需要仔细核实 自己的传参问题了。 当然感觉传参一般不会又太大问题。 再就是其他的设置的问题了比如: 命名空间了。 namespacesoapAction 这个2个一定要区分开。
(1)原来我上个公司的webserivice项目里面的
namespace(命名空间) = soapAction = namespace + methodName(方法名)
(2) 但是这个webservice里面的
namespace(命名空间) = 这就必须在中间加点东西了 soapAction = namespace +”/”+ methodName(方法名)
这个还是要看清楚的咯
版权声明:本文为博主原创文章,未经博主允许不得转载。
上一篇关于 android 程序中的 context
顶0踩0
人生没有彩排,只有现场直播,所以每一件事都要努力做得最好