最近学习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. Scrum 项目3.0

    Scrum 项目3.0 3.0----------------------------------------------------- SCRUM 流程的步骤2: Spring 计划 1. 确保pr ...

  2. Awesome Deep Vision

    Awesome Deep Vision  A curated list of deep learning resources for computer vision, inspired by awes ...

  3. MFC应用程序框架(转)

    对于程序员来说,如果要提高编程效率,一个好用的,功能强大的并且可以得心应手使用的编程工具往往会给我们程序员带来莫大的方便.其实对于现在的编程工具来说,使用哪一种工具都不是问题的关键,重要的是你能够使用 ...

  4. BP神经网络——交叉熵作代价函数

    Sigmoid函数 当神经元的输出接近 1时,曲线变得相当平,即σ′(z)的值会很小,进而也就使∂C/∂w和∂C/∂b会非常小.造成学习缓慢,下面有一个二次代价函数的cost变化图,epoch从15到 ...

  5. 使用latencytop深度了解你的系统的延迟(转)

    转载自系统技术非业余研究 http://blog.yufeng.info/archives/1239 我们在系统调优或者定位问题的时候,经常会发现多线程程序的效率很低,但是又不知道问题出在哪里,就知道 ...

  6. linux包之nc之nc命令

    nc-1.84-22.el6.x86_64不用系统上提供的nc版本会有所不同,其提供的参数使用方法也略有差异 nc -v -w 1 192.168.2.10 -z 1-65535|grep succe ...

  7. 利用递归生成组合数C(n,m)

    /*===================================== 数的组合问题.从1,2,…,n中取出m个数,将所有组合按照字典顺序列出. 如n=3,m=2时,输出: 1 2 1 3 2 ...

  8. ExtJs学习笔记之Window组件

    Window窗体组件 window是一个指定的打算作为一个应用程序窗口的面板,默认窗口是浮动的,resizable, 并且draggable,默认的,窗体靠document.body呈现. 1.示例: ...

  9. ajax同步,异步

    传输数据 同步:第一条传过去,对方接收到反馈以后,再传第二条; 异步:第一条传过去,不管对方有没有收到,继续传第二条. ajax(默认异步 async:true) 同步:执行完ajax内部代码,才执行 ...

  10. FFTW简介及使用

    http://fftw.org/ FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) i ...