/**
* 转换返回数据为list集合
* @param object
* @return
*/
public List<WorkOrder> convertSoapObjectList(SoapObject soapObject){
List<WorkOrder> workOrderList=new ArrayList<WorkOrder>();
//如果获取的是个集合,就对它进行下面的操作
if(null!=soapObject&&null!=soapObject.getName()){
//遍历Web Service获得的集合
for(int i = 0; i < soapObject.getPropertyCount(); i++){
WorkOrder workOrder = new WorkOrder();
//获取单条的数据
SoapObject soapChilds = (SoapObject)soapObject.getProperty(i);
//对单个的数据进行再次遍历,把它的每行数据读取出来
for(int k = 0; k < soapChilds.getPropertyCount(); k++){
PropertyInfo propertyInfo = new PropertyInfo();
soapChilds.getPropertyInfo(k, propertyInfo);
//获取实体类的所有属性
Field[] field = workOrder.getClass().getDeclaredFields();
//遍历所有属性
for(int j = 0 ; j < field.length ; j++){
//获取属性的名字
String name = field[j].getName();
//把每个属性的名字跟Web Service返回的k行进行对比
String ppinfoname = propertyInfo.getName().toLowerCase();
if(ppinfoname.equals(name.toLowerCase())){
if(name.equals("id")){
if(null!=soapChilds.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
Integer.parseInt(
soapChilds.getProperty(propertyInfo.getName()).toString())
);
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}else{
if(null!=soapChilds.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
soapChilds.getProperty(propertyInfo.getName()).toString());
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}
}
}
}
workOrderList.add(workOrder);
}
}
return workOrderList;
}
/**
* 转换返回数据为对象
* @param object
* @return
*/
public WorkOrder convertSoapObject(SoapObject soapObject){
WorkOrder workOrder = new WorkOrder();
//如果获取的是个集合,就对它进行下面的操作
if(null!=soapObject&&null!=soapObject.getName()){
//对单个的数据进行再次遍历,把它的每行数据读取出来
for(int k = 0; k < soapObject.getPropertyCount(); k++){
PropertyInfo propertyInfo = new PropertyInfo();
soapObject.getPropertyInfo(k, propertyInfo);
//获取实体类的所有属性
Field[] field = workOrder.getClass().getDeclaredFields();
//遍历所有属性
for(int j = 0 ; j < field.length ; j++){
//获取属性的名字
String name = field[j].getName();
//把每个属性的名字跟Web Service返回的k行进行对比
String ppinfoname = propertyInfo.getName().toLowerCase();
if(ppinfoname.equals(name.toLowerCase())){
if(name.equals("id")){
if(null!=soapObject.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
Integer.parseInt(
soapObject.getProperty(propertyInfo.getName()).toString())
);
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}else{
if(null!=soapObject.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
soapObject.getProperty(propertyInfo.getName()).toString());
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}
}
}
}
}
return workOrder;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void setFieldValue(Object target, String fname, Class ftype,Object fvalue) { //设置字段值 如:username 字段,setUsername(String username)
if (target == null
|| fname == null
|| "".equals(fname)
|| (fvalue != null && !ftype.isAssignableFrom(fvalue.getClass()))) {//如果类型不匹配,直接退出
return;
}
Class clazz = target.getClass();
try { //先通过setXxx()方法设置类属性值
String methodname="set" + Character.toUpperCase(fname.charAt(0)) + fname.substring(1);
Method method = clazz.getDeclaredMethod(methodname, ftype); //获取定义的方法
if (!Modifier.isPublic(method.getModifiers())) { //设置非共有方法权限
method.setAccessible(true);
}
if(!fvalue.equals("anyType{}")){
method.invoke(target, fvalue); //执行方法回调
}else{
fvalue=null;
method.invoke(target, fvalue); //执行方法回调
}
} catch (Exception me) {//如果set方法不存在,则直接设置类属性值
try {
Field field = clazz.getDeclaredField(fname); //获取定义的类属性
if (!Modifier.isPublic(field.getModifiers())) { //设置非共有类属性权限
field.setAccessible(true);
}
if(!fvalue.equals("anyType{}")){
field.set(target, fvalue); //设置类属性值
}else{
field.set(target, null);
}
} catch (Exception fe) {
}
}
}
/***
* 对于返回值不是String类型
* 发送soap请求
* @param methodName --请求的方法名
* @return
*/
public SoapObject sendSoapRequesttoString(String methodName){
SoapObject reponseReslut=null;
SoapObject request=new SoapObject(nameSpace,methodName);
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
AndroidHttpTransport httpTranstation = new AndroidHttpTransport(endPoint);
try {
// 调用WebService
httpTranstation.call(nameSpace+methodName, envelope);
// 获取返回的数据
reponseReslut = (SoapObject) envelope.bodyIn;
} catch (Exception e) {
e.printStackTrace();
}
return reponseReslut;
}
/***
* 对于返回值不是String类型
* 发送soapObject请求
* @param methodName --请求的方法名
* @param parameters[][] --请求的参数数组
* @return
*/
public SoapObject sendSoapRequesttoString(String methodName,String parameters[][]){
SoapObject reponseReslut=null;
SoapObject request=new SoapObject(nameSpace,methodName);
if(parameters!=null){
for(int i=0;i<parameters.length;i++){
request.addProperty(parameters[i][0],parameters[i][1]);
}
}
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
AndroidHttpTransport httpTranstation = new AndroidHttpTransport(endPoint);
try {
// 调用WebService
httpTranstation.call(nameSpace+methodName, envelope);
// 获取返回的数据
reponseReslut = (SoapObject) envelope.bodyIn;
} catch (Exception e) {
e.printStackTrace();
}
return reponseReslut;
}
相关推荐
本示例“android webservice 对象序列化例子”关注的就是如何在Android应用中处理这一过程。 **对象序列化** 是将Java对象转换为可以存储或传输的数据格式的过程。在Android中,这通常是将对象转换为XML或JSON字符...
### Android WebService应用详解 #### 一、概述 在Android开发中,客户端应用程序与服务器端进行数据交互是非常常见的需求之一。这种交互可以通过多种方式实现,其中一种常用的方式就是使用WebService。WebService...
0、本例子是我自己初学安桌开发调用webservice的小例子,例子很简单,下载者请按需要至少要把自己的开发平台塔建完整再下载使用,否则框架不完整下载也是废的。 1、解压后有4个文件夹:packages,ReleasePackages,...
在Android开发中,Web服务(通常指WebService)是一种允许应用程序之间进行交互的技术,它使得移动应用,如Android应用,能够与远程服务器进行数据交换。在本案例中,开发者遇到了一个常见的问题:`java.lang....
在Android中,访问WebService有多种方式,如使用HttpURLConnection、HttpClient、Volley库或Retrofit等。本篇主要讨论的是如何自定义一个封装好的WebService访问模块,支持回调接口。 1. **创建WebService接口**:...
Android Webservice教材是针对Android开发者设计的一套学习资源,它涵盖了使用Android平台与Web服务进行交互的各种技术。在Android应用开发中,Web服务通常用于获取远程数据、实现云同步等功能,使得应用程序能够与...
在Android开发中,Web服务(Webservice)是一个关键部分,它允许移动应用与远程服务器进行交互,获取或发送数据。本示例主要关注的是通过XML(eXtensible Markup Language)来实现Android与Web服务之间的通信。XML是...
"android webservice C#.NET"这个主题聚焦于使用C#和.NET框架来构建Web服务,并在Android平台上进行调用。本文将深入探讨这一技术栈的关键知识点。 一、Web服务 Web服务是一种通过HTTP协议交换数据的方式,它允许...
本案例“android webservice案例”聚焦于Android客户端如何调用Web Service来实现这一功能。我们将深入探讨相关知识点,包括Android的网络请求、SOAP与RESTful API、以及如何处理响应数据。 首先,Android平台对...
最近学习的是在android端如何去调用远程WebService,都说WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK...
综上所述,这个“android webservice 例子”涵盖了Android应用与Web Service交互的核心步骤,包括网络请求、异步处理、数据解析、错误处理和UI更新。通过学习这个例子,开发者可以更好地理解和应用这些概念到自己的...
本文将探讨如何在Android中调用WebService并使用JSON来安全地传输实体对象。首先,我们依赖于两个类库:ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar用于Android端,而Newtonsoft.Json.dll则用于服务端...
在Android应用开发中,用户登录功能是常见的需求之一。在这个项目中,我们看到了一个通过Web服务连接SQL数据库的实现方式,以及如何利用Android的布局管理器进行界面切换。以下是相关知识点的详细说明: 1. **...
Android平台之Webservice详解(超详细),Android平台之Webservice详解(超详细),Android平台之Webservice详解(超详细)
在Android客户端调用Web Service上传图片到服务器的过程中,主要涉及以下几个关键知识点: 1. **文件I/O操作**:客户端首先需要从SD卡或其他存储位置读取图片文件。这里使用`FileInputStream`读取图片文件,然后...
通过在MainActivity中创建线程,实现调用webservice。webService_thread是通过Runable和Thread创建的线程,webService_thread2是通过Callable和Future创建的线程。 和此代码配套的文章 ...
在这个“android 访问webService Demo”中,我们将探讨如何在Android应用中集成和使用Web Service,尤其适合初学者快速上手。 一、理解Web Service Web Service是一种跨平台的通信机制,它允许不同的应用程序通过...
在本场景中,我们讨论的是如何将Android设备上的文件上传到由C#编写的Web服务(WebService)。以下是对这个过程的详细解释: 1. **Android端的文件选择与读取**: - Android应用首先需要获取用户选择的文件。可以...