最近学习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. 【P1326】超级教主

    DP优化 原题: LHX教主很能跳,因为Orz他的人太多了.教主跳需要消耗能量,每跳1米就会消耗1点能量,如果教主有很多能量就能跳很高.教主为了收集能量,来到了一个神秘的地方,这个地方凡人是进不来的. ...

  2. Android平台下的JNI开发

    JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程.要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Ec ...

  3. (转)8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset

    8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset by Jason Brownlee on August ...

  4. java.util.concurrent Class ThreadPoolExecutor

    http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html

  5. X64相关文章

    http://www.codemachine.com/article_x64deepdive.html https://software.intel.com/sites/default/files/m ...

  6. prtg

    prtg http://www.paessler.com/prtg/features prtg的sensor技术 数据库监视 Flexible Alerting 9 notification tech ...

  7. OpenJudge计算概论-短信计费

    /*===================================== 短信计费 总时间限制: 1000ms 内存限制: 65536kB 描述 用手机发短信,一般一条短信资费为0.1元,但限定 ...

  8. python3_mechanicalsoup

    python3_mechanicalsoup # !/usr/bin/python3.4 # -*- coding: utf-8 -*- import mechanicalsoup # 事实证明,这个 ...

  9. CSharp 如何通过拼接XML调用存储过程来查询数据

    每查询数据,需要访问一次数据库,这样会影响性能:如果把查询的数据拼接成XML形式,作为一个参数整体传给存储过程来处理,这只访问数据库一次,执行速度会快很多. 1.C#代码如下: /// <sum ...

  10. SQL SERVER 生成建表脚本

    /****** Object: StoredProcedure [dbo].[GET_TableScript_MSSQL] Script Date: 06/15/2012 11:59:00 ***** ...