最近学习WebService,感觉利用这个借口开发网站的Android客户端方便及了,用到一个工具类,这里铭记一下。

public static final String WebServiceNamespace =""//地址
public static final String WebAddress = ""//地址

调用Webservice

public static Object callWebservice(String WebServiceUrl,String method,String[] params,Object[] values){Object result = null;SoapObject rpc = new SoapObject(WebServiceTool.WebServiceNamespace,method);if(params!=null){for(int i=0;i<params.length;i++)rpc.addProperty(params[i], values[i]);}SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut = rpc; envelope.dotNet = true;envelope.setOutputSoapObject(rpc);HttpTransportSE ht = new HttpTransportSE(WebServiceUrl); ht.debug = true;String SOAP_ACTION = WebServiceTool.WebServiceNamespace + method;try{ht.call(SOAP_ACTION, envelope);result = envelope.getResponse();}catch (IOException e){e.printStackTrace();}catch (XmlPullParserException e){e.printStackTrace();}    return result;}

将WebService调用获得的对象转换成对象

View Code

public static Object toObject(Object obj,Class<?> cls){if(obj==null)return null;if(obj instanceof String)return obj;Object result = null ;if(!(obj instanceof SoapObject)) return null;try{result = cls.newInstance() ;SoapObject so = (SoapObject)obj;System.out.println(so.getNamespace());for(int i=0;i<so.getPropertyCount();i++){PropertyInfo pinfo = new PropertyInfo();so.getPropertyInfo(i, pinfo);System.out.println(pinfo.name);Object value = so.getProperty(i);if(value==null)continue;Object returnValue = value;Field field = null;try{field = cls.getField(pinfo.name);}catch(NoSuchFieldException e){continue;}String name = field.getType().getName();System.out.println(name);if(name.equals("int"))returnValue = Integer.valueOf(returnValue.toString());else if(name.equals("short"))returnValue = Short.valueOf(value.toString());else if(name.equals("long"))returnValue = Long.valueOf(value.toString());else if(name.equals("byte"))returnValue = Byte.valueOf(value.toString());else if(name.equals("float"))returnValue = Float.valueOf(value.toString());else if(name.equals("double"))returnValue = Double.valueOf(value.toString());else if(name.equals("BigInteger"))returnValue = new BigInteger(value.toString());else if(name.equals("boolean"))returnValue = Boolean.valueOf(value.toString());else if(name.equals("char"))returnValue = value.toString().charAt(0);else if(name.equals("java.util.Date"))returnValue = Date.parse(value.toString());else if(name.equals("java.lang.String"))returnValue = value.toString();cls.getField(pinfo.name).set(result,returnValue);}}catch (Exception e){e.printStackTrace();}return result;}

将WebService调用获得的对象转换成对象数组

public static Object[] toObjects(Object obj,Class<?> cls){if(obj==null)return null;if(!(obj instanceof SoapObject))return null;SoapObject so = (SoapObject)obj;int count = so.getPropertyCount();        Object[] objs = new Object[count];for(int i=0;i<count;i++){objs[i] = toObject(so.getProperty(i),cls);}return objs;        }

public static ArrayList<Object> toObjectList(Object obj,Class<?> cls){if(obj==null)return null;if(!(obj instanceof SoapObject))return null;SoapObject so = (SoapObject)obj;int count = so.getPropertyCount();        ArrayList<Object> objs = new ArrayList<Object>();for(int i=0;i<count;i++){objs.add(toObject(so.getProperty(i),cls));}return objs;    }    

转载于:https://www.cnblogs.com/LIANQQ/archive/2013/01/04/2836855.html

Android中调用webservice的工具类相关推荐

  1. android wsdl封装,在Android中调用C#写的WebService(附源代码)

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

  2. Android开发之访问WebService的工具类

    Android中使用WebService通讯,下面对访问WebService的工具类进行记录 package com.wjy.project.railway.tools;import android. ...

  3. 在Android中使用Android Ksoap2调用WebService

    一.WebService介绍 WebService是基于SOAP协议可实现web服务器与web服务器之间的通信,因采用SOAP协议传送XML数据具有平台无关性,也是成为解决异构平台之间通信的重要解决方 ...

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

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

  5. Android获取通讯录中的所有联系人工具类

    一个获取通讯录中所有联系人的工具类,存储在Map中,Map中key为手机号,value为联系人的姓名.还提供了一个根据手机号查询该手机号的联系人姓名的功能. 注:同一联系人可以存储多个手机号,但是同一 ...

  6. android demo 调用,Android中调用C++函数的一个简单Demo

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

  7. Android开发 几个常用工具类

    本文出自[张鸿洋的博客]并 做了部分修改. 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311 打开大家手上的项目,基 ...

  8. 在 Android 中调用二进制可执行程序(native executable )

    在 Android 中调用二进制可执行程序(native executable ) 前几天有需要在java代码中调用二进制程序,就在网上找了些资料,写点东西记录下. Android 也是基于linux ...

  9. Android开发 无线Wifi+WifiUtil工具类,android开发网格布局

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

最新文章

  1. 虚幻引擎5–环境设计学习教程
  2. CentOS中vsftp安装与配置
  3. 小程序统一服务消息_[miniblog]小程序订阅消息踩坑记
  4. LeetCode: 929. Unique Email Addresses
  5. C# delegate event
  6. 超级玛丽地图java_我的世界超级玛丽地图包
  7. JVM面试问题系列:JVM 配置常用参数和常用 GC 调优策略
  8. boost::logic::tribool相关用法的测试程序
  9. linux php 守护进程,PHP程序员玩转Linux系列 使用supervisor实现守护进程
  10. 文本留言 php,一个php作的文本留言本的例子(一)
  11. dubbo原理_Dubbo原理浅析
  12. Android 查看內存使用
  13. MYSQL 中varchar类型转text格式
  14. android欢迎界面的功能,Android 启动 ( 欢迎 ) 页面实现
  15. 微信卡券---第一步:上传卡券图片素材
  16. MapReduce实现kmeans算法
  17. 时间一天天过去,好像什么都没变。
  18. office2007无法卸载 无法安装
  19. 基于python的音乐数据分析_基于Python的亚马逊音乐产品评论分析
  20. conda安装环境报错:Solving environment: failed with initial frozen solve.

热门文章

  1. torchvision中Transform的normalize
  2. 开普勒行星运动第二定律在电子与原子核运动中的应用
  3. hexo右下角弄一个live2d的卡通动画小人
  4. 大话数据结构13:二叉树 数组存储
  5. 牛客网 在线编程 局部最小值位置
  6. 机器学习,计算机视觉相关资料
  7. oracle动态采样超时,解决 ORACLE 11.2 动态采样导致的性能问题
  8. 螺丝上的十字磨没了_十字起子和无限下拉菜单
  9. java并发核心知识体系精讲_JVM核心知识体系
  10. Git ----fatal: unable to access ‘https://gitee.com/***.git/‘: SSL certificate problem: unable