最近学习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调用获得的对象转换成对象

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;
}

转--Android中调用webservice的工具类的更多相关文章

  1. 在Android中调用WebService

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

  2. Android中创建倒影效果的工具类

                     一.有时候我们需要创建倒影的效果,我们接触最多的都是图片能够创建倒影,而布局依然可以创建倒影.       二.工具类代码 import android.graphi ...

  3. Android中经常使用的工具类02

    1.读取手机联系人信息 一般用在读取手机通讯录上传,这一块比較多. import java.util.ArrayList; import java.util.List; import android. ...

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

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

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

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

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

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

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

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

  8. [转][android][利用JNI技术在Android中调用、调试C++代码]

    在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在Android中会生成Linux系统下的.so文件(好吧,其实我基本没用过Linux). 没写过 ...

  9. Utils--前台调用后台接口工具类

    Utils--前台调用后台接口工具类 package com.taotao.manage.httpclient; import java.io.IOException; import java.net ...

随机推荐

  1. Java——函数

     ------- <a href="http://www.itheima.com" target="blank">android培训</a ...

  2. linux如何查看磁盘剩余空间

    [root@Linux var]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 /dev/hdb2 75G 75G 0 100% / /dev/hdb1 99M 9.2M 85M 10% ...

  3. timestamp 与 rowversion

    联机丛书: timestamp timestamp 这种数据类型表现自动生成的二进制数,确保这些数在数据库中是唯一的.timestamp 一般用作给表行加版本戳的机制.存储大小为 8 字节. 注释 T ...

  4. Entity Framework的核心 – EDM(Entity Data Model) 一

    http://blog.csdn.net/wangyongxia921/article/details/42061695 一.EnityFramework EnityFramework的全程是ADO. ...

  5. 008. asp.net mvc3.0安装文件及其安装时发生错误的解决方案

    0. 安装步骤: vs2010 → vs2010sp1→ AspNetMVC3Setup.exe→ AspNetMVC3Setup_CHS.exe→ AspNetMVC3ToolsUpdateSetu ...

  6. 虚拟化之kvm与xen对比

    xen XenServer is the leading open source virtualization platform, powered by the Xen Project hypervi ...

  7. HtmlEncode、HtmlDecode、UrlEncode、UrlDecode

    HtmlEncode: 将 Html 源文件中不允许出现的字符进行编码.例如:"<".">"."&" 等. HtmlDe ...

  8. svn安装

    方法三.无法连接网络的情况(link链接) 1.从官网下载 Site-1.6.5.zip 2.解压Site-1.6.5.zip至${eclipse}PluginsSubclipse-1.6.5.zip ...

  9. oracle定时任务JOB

    在jobs上点新建  what值:statisticsToDay;  这个是存储过程的名字间隔:sysdate+1/24   表示每个小时运行一次          1:每分钟执行 Interval ...

  10. javascript取得机器名,用户名,读写注册表,启动应用程序

    javascript取得机器名,用户名,读写注册表,启动应用程序//javascript有个特殊的对象ActiveXObject,通过它可以访问windows的本地文件系统和应用程序,比如:有的时候我 ...