在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
ksoap2-android-3.0.0-jar 第三方库来调用.net 写的Web Service 如果没有参数,那么调用一切顺利,但是如果服务是带参数的,那么服务端接收的参数都是nul。
而Web Service单独测试,都是正确的。这个问题困扰我了很久,现在终于解决了,相当简单。百度查了很久,很多解决方法,如:
1、只需要在 WebService的类属性中加入SoapRpcServiceAttribute属性就可以了。
[SoapRpcService(RoutingStyle=SoapServiceRoutingStyle.SoapAction)]
2、参数名必须跟webservice方法中的参数名一致,因为ws将参数名自动改为了arg0、arg1,所有调用时参数也需要修改。
3、NAMESPACE 后面没有加“/”
经过逐一测试,发现按照1修改调用直接异常出错,服务器端都直接拒绝了,按照2改没有任何用处,至于3,我是加了“/”,但依然没有用。但3对我有了个启发,我仔细对比了下命名空间发现我的 WebService类属性命名空间是这么命名的:http://tempuri.org。看到什么问题没?和android端的命名空间对比发现少了“/”。
好吧,我承认我开始以为这个“/”说是加在android客户端的,因为里面的actonSoap = NAMESPACE + Method,这样命名空间空间后面“/”是必须可少的,不然就要写成actonSoap = NAMESPACE + “/” + Method。
虽然加了“/”是成功了,但是原因呢?我们看下下面这位仁兄的代码,他的问题依旧。
这位仁兄的帖子在http://bbs.csdn.net/topics/390554653,也不知道3年过去了他解决了没,我们看具体的报文:
WebServiceStudio 调用的报文(服务端)
<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetNewsListByColId xmlns="http://tempuri.org/">
<colId>29</colId>
</GetNewsListByColId>
</soap:Body>
</soap:Envelope> 用Android调用报文(客户端) <v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<GetNewsListByColId xmlns=" http://tempuri.org/" id="o0" c:root="1">
<colId i:type="d:string">29</colId>
</GetNewsListByColId>14:55:50
</v:Body>
</v:Envelope> 可以看到,具体格式不太一致,但其实本身不影响服务端解析的,这里真正影响的是命名空间,我红色标出的,看到什么问题了吗?都有“/”啊,为什么还出错?!在仔细看看,原来客户端命名空间http前面多了个空格!好吧,原来大家知道了吧,命名空间不一致!原因终于找到了,微软C#端Webservice服务对命名空间要求是要完全一致。
网上很多查资料问问题的时候,常常直接给解决方法,但不说原因,往往大家按照提供的解决方法按部就班去做,但环境各不相同,有些人照着做了成功了,但总有人照着做了就是不行,比如网上提供的第三个解决方法,多说一句命名空间必须保证一致,这样就大家不用纠结添加“/”的这个细节问题了。
在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决的更多相关文章
- 在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}
最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web se ...
- 在Android中调用C#写的WebService(附源代码)
由于项目中要使用Android调用C#写的WebService,于是便有了这篇文章.在学习的过程中,发现在C#中直接调用WebService方便得多,直接添加一个引用,便可以直接使用将WebServi ...
- 在Android 中使用KSOAP2调用WebService
WebService 是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.在Android SDK中并没有提供调用WebService的 ...
- 在Android中调用WebService
某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查.我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数 ...
- Android客户端调用Asp.net的WebService
Android客户端调用Asp.net的WebService 我来说两句 |2011-11-23 13:39:15 在Android端为了与服务器端进行通信有几种方法:1.Socket通信2.WCF通 ...
- Android 中调用本地命令
Android 中调用本地命令 通常来说,在 Android 中调用本地的命令的话,一般有以下 3 种情况: 调用下也就得了,不管输出的信息,比如:echo Hello World.通常来说,这种命令 ...
- 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码
原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...
- Android中调用C++函数的一个简单Demo
这里我不想多解释什么,对于什么JNI和NDK的相关内容大家自己去百度或谷歌.我对Android的学习也只是个新手.废话少说直接进入正题. 一.在Eclipse中创建一个Android Applicat ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
随机推荐
- XXX 不是当前用户的有效责任,请联系您的系统管理员
EBS中,有时进入一些基于OA Framework 的Web页面时,会出现这种现象: XXX 不是当前用户的有效责任,请联系您的系统管理员 ( or: xxx is not a valid resp ...
- 随笔-未整理-linux下流量查看
nethogs: 按进程查看流量占用 iptraf: 按连接/端口查看流量 ifstat: 按设备查看流量 ethtool: 诊断工具 tcpdump: 抓包工具 ss: 连接查看工具 其他: dst ...
- [Erlang31]Erlang trace总结
在一个并行的世界里面,我们很难做到单步断点调试来定位问题(太多的消息飞来飞去),Erlang设计者也深刻体会到这一点,推出了另一个trace机制. 通过这个trace,你可以: .特定进程集内的函数调 ...
- 使用像素单位设置 EXCEL 列宽或行高
在导出 Excel 的时候, 经常要需要给列设置宽度或给行设置高度, 在使用 NPOI 或 EppPlus 等组件进行操作的时候, 列宽和行高的单位都不是像素, 好像是英寸,具体是啥也说不清. 平常在 ...
- .net图表之ECharts随笔08-bar柱状图
之前一直都是跟着修改demo,感觉用得很吃力,现在结合上配置手册就好很多了,其实说到底就是参数的配置,所以配置手册尤为重要. 当然,这其中还是很多坑,希望可以找到对应的解决方案吧!!! 1. tool ...
- insert into 的另一种添加插入新行方式
语法 1 插入一行 insert into table (field1,field2.....) select value1,value2........; 2 插入多行 insert into ta ...
- ASP .NET运行机制(visio图)
- [UWP]xaml中自定义附加属性使用方法的注意项
---恢复内容开始--- 随笔小记,欢迎指正 在UWP平台上做WVVM的时候,想针对ListBox的SelectionChanged事件定义一个自定义的命令,于是使用自定义附加属性的方式.可是最后自定 ...
- xml和JSON格式相互转换的Java实现
依赖的包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar xom-1.2.1.jar commons-lang-2.1.jar commons-io-1.3.2.j ...
- iOS开发网络篇—GET请求和POST请求的说明与比较
1.GET请求和POST请求简单说明 1.1 创建GET请求 // 1.设置请求路径 NSString *urlStr = [NSString stringWithFormat:@"http ...