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的问题解决的更多相关文章

  1. 在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}

    最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web se ...

  2. 在Android中调用C#写的WebService(附源代码)

    由于项目中要使用Android调用C#写的WebService,于是便有了这篇文章.在学习的过程中,发现在C#中直接调用WebService方便得多,直接添加一个引用,便可以直接使用将WebServi ...

  3. 在Android 中使用KSOAP2调用WebService

    WebService 是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.在Android SDK中并没有提供调用WebService的 ...

  4. 在Android中调用WebService

    某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查.我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数 ...

  5. Android客户端调用Asp.net的WebService

    Android客户端调用Asp.net的WebService 我来说两句 |2011-11-23 13:39:15 在Android端为了与服务器端进行通信有几种方法:1.Socket通信2.WCF通 ...

  6. Android 中调用本地命令

    Android 中调用本地命令 通常来说,在 Android 中调用本地的命令的话,一般有以下 3 种情况: 调用下也就得了,不管输出的信息,比如:echo Hello World.通常来说,这种命令 ...

  7. 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...

  8. Android中调用C++函数的一个简单Demo

    这里我不想多解释什么,对于什么JNI和NDK的相关内容大家自己去百度或谷歌.我对Android的学习也只是个新手.废话少说直接进入正题. 一.在Eclipse中创建一个Android Applicat ...

  9. Java乔晓松-android中调用系统拍照功能并显示拍照的图片

    android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...

随机推荐

  1. 团体程序设计天梯赛L2-021 点赞狂魔 2017-04-18 11:39 154人阅读 评论(0) 收藏

    L2-021. 点赞狂魔 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 微博上有个"点赞"功能,你可以为你 ...

  2. handsontable-integrations

    jquery:可以通过$选择元素 bootstrap:使用bootstrap,有些样式需要重置 backbone:整合

  3. Unity3d之Coroutine

    在Unity3d中使用C#时,Coroutine是一个大有用处的好东西,至于怎么用网上多的是讲,我仅在此记录最近一次使用中的小发现. 因为某种需求,要在一个Coroutine实现中使用while循环, ...

  4. 记开发个人图书收藏清单小程序开发(六)Web开发

    Web页面开发暂时是没有问题了,现在开始接上Ptager.BL的DB部分. 首先需要初始化用户和书房信息.因为还没有给其他多余的设计,所以暂时只有个人昵称和书房名称. 添加 Init Razor Pa ...

  5. Promise之你看得懂的Promise

    本文由作者陈旭锋(任职网易考拉)授权网易云社区发布. Promise源码详解 学习知识要善于思考,思考,再思考. -- 爱因斯坦 1.回调地狱 曾几何时,我们的代码是这样的,为了拿到回调的结果,不得不 ...

  6. Webpack vs Rollup

    本文由作者余伯贤授权网易云社区发布. 2017年4月份的时候,Facebook将React的构建工具换成了Rollup.很多人就有疑问了,Webpack不也是Facebook团队开发的吗,为什么不使用 ...

  7. 十一、linux文件系统权限详解

    对于文件系统权限,我们前面已经讲解了一部分,这里就不在重复了. 1.修改文件权限有两种,一种是数字.一种是字母 (chmod 的修改只能是属主或者root) 数字: 修改目录权限和目录内所有文件的权限 ...

  8. 【OCP题库-12c】最新CUUG OCP 071考试题库(69题)

    69.(31-1)choose the best answer: Evaluate the following query: SELECT INTERVAL '300' MONTH, INTERVAL ...

  9. “全栈2019”Java第九十章:内部类可以向上或向下转型吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  10. Python数据采集处理分析挖掘可视化应用实例

    距离上一次发Python的技术贴已经过去两年了,这两年大法初成,并在知乎谢了相关技术专栏.现在搬运如下,均为原创,转载需注明出处哦! https://zhuanlan.zhihu.com/p/2957 ...