最近学习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. Caffe-windows上训练自己的数据

    1.数据获取 在网上选择特定类别,下载相应的若干张图片.可以网页另存或者图片下载器.本例中保存了小狗.菊花.梅花三类各两百多张. 2.重命名 import os import os.path root ...

  2. <input>标签中获得鼠标与否的样式变化——js实现

    <!DOCTYPE html> <html> <head lang="zh"> <meta http-equiv="X-UA-C ...

  3. python [吐槽]关于nan类型时遇到的问题

    今天在用写一段求和的代码时候,发现最后返回的是nan的结果,这段循环求和代码依次调用了三个函数,于是依次打印这三个函数的返回值,发现其中一个函数的返回值为nan,原来是因为这段函数里面没有相似的用户, ...

  4. T 恤

    https://detail.tmall.com/item.htm?spm=a220o.1000855.1998025129.1.A6Zaol&id=528088614049&pvid ...

  5. OpenJudge计算概论-计算三角形面积【海伦公式】

    /*============================================== 计算三角形面积 总时间限制: 1000ms 内存限制: 65536kB 描述 平面上有一个三角形,它的 ...

  6. OpenJudge计算概论-四大湖

    /*====================================================================== 四大湖 总时间限制: 1000ms 内存限制: 655 ...

  7. MySQL下载、安装和修改root密码

    一.下载地址:MySQL_5.6.22_winx64_XiaZaiBa :http://rj.baidu.com/soft/detail/12585.html?ald 二.安装软件,安装到指定的路径, ...

  8. linux xargs参数

    xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...

  9. java作用域-转

    java中,针对不同的修饰词,类及其类中的方法.域都有不同的可见性.以下为针对java中可见性的几点总结. 1.java中的默认包(这个包是没有名称的),对于任何修饰词来说,其中的内容只能对其包内类为 ...

  10. [转]利于ThreadLocal管理Hibernate Session

    摘自http://aladdin.iteye.com/blog/40986 在利用Hibernate开发DAO模块时,我们和Session打的交道最多,所以如何合理的管理Session,避免Sessi ...