最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web service中的一个serch()方法,然后发现,每次的返回值都是一个AnyType{},Logcat如图所示:

  网上搜集了很多资料,产生的原因其实很简答,是因为服务端返回值为null,Logcat中显示的就职anyType{},找到了原因,解决起来也就好说了,其中包括这些方法:

  {解决方法引用自博客园用户日行一米,这里表示感谢}

  1、只需要在 WebService的类属性中加入SoapRpcServiceAttribute属性就可以了。
      [SoapRpcService(RoutingStyle=SoapServiceRoutingStyle.SoapAction)]

2、参数名必须跟webservice方法中的参数名一致,因为ws将参数名自动改为了arg0、arg1,所有调用时参数也需要修改。

3、NAMESPACE  后面没有加“/”

  特此说明:

  方法一我不知道去哪儿加,看博主在解决问题时候,说方法一加了之后,直接报了异常,我也就没管。

  方法二则是我解决问题的关键,看我的Logcat中,传入参数为 username = 10010,所以传过去之后变量是username(目前我是这样认为),而webservice会将参数名自动改为arg0、arg1......所以参数不同,导致了传回的结果变成了null,显示return anyType{}。

        //调用方法时需要传入一个参数
//为了与web service保持一致,需要设置为arg0,因为web service会自动将其转化为arg0 arg1
rpc.addProperty("arg0",username);

  还有一个原因就是

            //设置是否调用的是dotNet开发的WebService,服务器是.net的需要设置为true,java不用
envelope.dotNet = false;

  我的服务端用的Java写的,所以这个属性应该设置为false。

至此,我的问题已经解决了!!!

  2017.4.23

  今天又遇到了同样的问题,但是这次就是从以前的经验中,来寻找问题了。我在返回一个存放有Map的List时候,出现了返回值为NULL的情况,Logcat里边显示的就是AnyType{},这次肯定是其他原因。

  仔细观察了一下代码,发现我在定义Map的时候是这样定义的:

  HashMap<String, String> map = new HashMap<String,String>();

  同理,拿我的List定义就是这样:

  ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();

  相比之前的定义,不一样的地方好像是Map<>中的两个参数。可能因为返回的数据不一定都是String类型的原因吧,但真正为什么,我也不清楚。只是更改了一下里边的参数这个返回值问题才解决,代码如下:

     ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> map = new HashMap<String,Object>();

  有问题再来补充吧!!!

在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}的更多相关文章

  1. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决

    ksoap2-android-3.0.0-jar 第三方库来调用.net 写的Web Service 如果没有参数,那么调用一切顺利,但是如果服务是带参数的,那么服务端接收的参数都是nul.      ...

  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. 实现1sym转换成2个sym送给CVI(VGA数据)

    CVI的时序如下 :de指示数据有效. 从下面的程序看,同步码的长度不会影响对有效数据的判断.同步码的作用更多的是用于计算行及一行的像素数目.方案一: 1 module vga_1sym_2_2sym ...

  2. Arcgis Server Manager发布ArcGISTiledMapServiceLayer服务

    用ArcgisServer manager发布一个ArcGISDynamicMapServiceLayer服务: Add New Service->填写name,type 选择Map servi ...

  3. leaflet入门(五)API翻译(下)

    L.PointConstructor(函数构造器)Properties(属性)Methods(方法) L.BoundsConstructor(函数构造器)Properties(属性)Methods(方 ...

  4. Django-类视图与中间件

    ------类视图 1.类视图引入 def register(request): """处理注册"""   # 获取请求方法,判断是GET/ ...

  5. Ng第十课:应用机器学习的建议(Advice for Applying Machine Learning)

    10.1  决定下一步做什么 10.2  评估一个假设 10.3  模型选择和交叉验证集 10.4  诊断偏差和方差 10.5  归一化和偏差/方差 10.6  学习曲线 10.7  决定下一步做什么 ...

  6. 单片机CPU

    MCS-51的CPU由 运算部件和 控制部件构成 运算部件 包括ALU.位处理器.累加器A.暂存器.程序状态寄存器PSW.寄存器B 累加器A 一个8位累加器,A的进位标志Cy同时是位处理器的一位累加器 ...

  7. mui学习

      改变状态栏的颜色 <meta name="apple-mobile-web-app-capable" content="yes"> <me ...

  8. MongoDB、redis、memcached

    mongodb和memcached不是一个范畴内的东西. mongodb     是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据. memcached,redis mongodb ...

  9. linux 配置阿里云yum库

    备份当前yum库 mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex 新建yum源配置目录 mkdir /etc/yum.repos.d 设置阿里yum ...

  10. vue.js入门学习

    可以用淘宝npm镜像 然后安装 然后初始化项目: Watch就是一个监听 v-if是如果为false就根本不在页面存在这个元素 v-show是通过display:none来控制这个元素的显示和隐藏 r ...