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. NLog日志框架简写用法

    本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日志工具,今天介绍下NLog.NLog ...

  2. poj2115 Looooops 扩展欧几里德的应用

    好开心又做出一道,看样子做数论一定要先看书,认认真真仔仔细细的看一下各种重要的性质 及其用途,然后第一次接触的题目 边想边看别人的怎么做的,这样做出第一道题目后,后面的题目就完全可以自己思考啦 设要+ ...

  3. WEBXONE IIS部署C/S程序

    WEBXONE IIS部署C/S程序 在EXE的主窗体的ONCREATE()里添加如下代码,部署的时候记得带wxoBase.dll. uses wxoExec; procedure TFrmMain. ...

  4. centos top命令列解释

    查看单个进程:top -p 进程号 PID(Process ID):进程标示号 ( 每个 process 的 ID ) USER:进程所有者的用户名 ( 该 process 所属的使用者 ) PR:进 ...

  5. css 颜色渐变 兼容性

    参考文献:http://caibaojian.com/css3-background-gradient.html    https://www.cnblogs.com/xzzzys/p/7495725 ...

  6. memory leak-----tomcat日志warn

    web应用借助于结构:spring mvc + quartz结构,部署到tomcat容器时,shutdown时的error信息: appears to have started a thread na ...

  7. Buffer Pool--SQL Server:Buffer Manager 对象

    --============================================================== --参考链接:http://technet.microsoft.com ...

  8. Spring学习(七)——开发Web Service的几种方式

    本文作者在学习使用Java开发Web Service(不包括Restful)时,由于不知道Java有这么多框架支持开发Web Service一度陷入迷惘,不知道这些框架各有 什么不同,各有什么优缺点. ...

  9. SQLServer数据库的状态一直都是正在还原

    解决方案: 执行以下SQL语句 restore database [数据库名称] with recovery

  10. .netcore Swagger 生成 api接口文档

    1, 引用第三方包, Swashbuckle.AspNetCore Swashbuckle.AspNetCore.Swagger Swashbuckle.AspNetCore.SwaggerUI 最简 ...