最近学习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. MySQL中日期与字符串相互转换,并进行日期比较查询

    技术交流群:233513714 1.日期无需转换查询(日期在数据库中的类型为字符串) select * from day where dateTime > '2016-03-15' 2.使用da ...

  2. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  3. 【python2.7】raw_input()和input()区别及用法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.函数介绍1. input([prompt]) 等同于eval(raw_input([prompt])),这个函数不会捕捉用户输入上的错误,如果 ...

  4. SQL_TRACE与tkprof分析

    一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL ...

  5. kvo-观察者-iOS

    #import <Foundation/Foundation.h> @interface Child : NSObject @property (nonatomic,assign) int ...

  6. CorelDRAW中拆清除调和效果的技巧

    图形对象应用的调和效果达不到用户的满意,可以将该种调和效果清除,清除调和效果后,只保留起始对象和结束对象.CorelDRAW软件支持两种方法来清除调和对象,本教程将详解CorelDRAW中清除调和效果 ...

  7. linux中Zabbix邮件报警设置配置步骤

    使用外部邮箱账号发送报警邮件设置 配置Zabbix服务端外部邮箱 vi /etc/mail.rc #编辑,添加以下信息 set from=xxx@163.com smtp=smtp.163.com s ...

  8. event.srcElement兼容处理

    在IE下,event对象有srcElement属性,但是没有target属性:Firefox下,even对象有target属性,但是没有srcElement属性.. 解决方法:使用obj(obj = ...

  9. html初学(二)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <table bor ...

  10. Java compiler level does not match the version of the installed Java project facet.问题

    从同事那里拷贝过来的web项目,导入到eclipse中,出现Java compiler level does not match the version of the installed Java p ...