`
lilin530
  • 浏览: 90946 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android webservice

阅读更多

/**

* 转换返回数据为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 webservice 对象序列化例子”关注的就是如何在Android应用中处理这一过程。 **对象序列化** 是将Java对象转换为可以存储或传输的数据格式的过程。在Android中,这通常是将对象转换为XML或JSON字符...

    android webserviceandroid webserviceandroid

    ### Android WebService应用详解 #### 一、概述 在Android开发中,客户端应用程序与服务器端进行数据交互是非常常见的需求之一。这种交互可以通过多种方式实现,其中一种常用的方式就是使用WebService。WebService...

    VS2015Android WebService

    0、本例子是我自己初学安桌开发调用webservice的小例子,例子很简单,下载者请按需要至少要把自己的开发平台塔建完整再下载使用,否则框架不完整下载也是废的。 1、解压后有4个文件夹:packages,ReleasePackages,...

    android webService

    在Android开发中,Web服务(通常指WebService)是一种允许应用程序之间进行交互的技术,它使得移动应用,如Android应用,能够与远程服务器进行数据交换。在本案例中,开发者遇到了一个常见的问题:`java.lang....

    android WebService封装 支持回调

    在Android中,访问WebService有多种方式,如使用HttpURLConnection、HttpClient、Volley库或Retrofit等。本篇主要讨论的是如何自定义一个封装好的WebService访问模块,支持回调接口。 1. **创建WebService接口**:...

    android webservice 教材,包含几十个文件

    Android Webservice教材是针对Android开发者设计的一套学习资源,它涵盖了使用Android平台与Web服务进行交互的各种技术。在Android应用开发中,Web服务通常用于获取远程数据、实现云同步等功能,使得应用程序能够与...

    android webservice

    在Android开发中,Web服务(Webservice)是一个关键部分,它允许移动应用与远程服务器进行交互,获取或发送数据。本示例主要关注的是通过XML(eXtensible Markup Language)来实现Android与Web服务之间的通信。XML是...

    android webservice C#.NET

    "android webservice C#.NET"这个主题聚焦于使用C#和.NET框架来构建Web服务,并在Android平台上进行调用。本文将深入探讨这一技术栈的关键知识点。 一、Web服务 Web服务是一种通过HTTP协议交换数据的方式,它允许...

    android webservice案例

    本案例“android webservice案例”聚焦于Android客户端如何调用Web Service来实现这一功能。我们将深入探讨相关知识点,包括Android的网络请求、SOAP与RESTful API、以及如何处理响应数据。 首先,Android平台对...

    Android调用WebService

    最近学习的是在android端如何去调用远程WebService,都说WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK...

    android webservice 例子

    综上所述,这个“android webservice 例子”涵盖了Android应用与Web Service交互的核心步骤,包括网络请求、异步处理、数据解析、错误处理和UI更新。通过学习这个例子,开发者可以更好地理解和应用这些概念到自己的...

    Android调用webservice进行实体对象的传递Json

    本文将探讨如何在Android中调用WebService并使用JSON来安全地传输实体对象。首先,我们依赖于两个类库:ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar用于Android端,而Newtonsoft.Json.dll则用于服务端...

    android登录,webservice连接sql数据库,布局实现界面切换

    在Android应用开发中,用户登录功能是常见的需求之一。在这个项目中,我们看到了一个通过Web服务连接SQL数据库的实现方式,以及如何利用Android的布局管理器进行界面切换。以下是相关知识点的详细说明: 1. **...

    Android平台之Webservice详解(超详细)

    Android平台之Webservice详解(超详细),Android平台之Webservice详解(超详细),Android平台之Webservice详解(超详细)

    Android客户端调用webService上传图片到服务器

    在Android客户端调用Web Service上传图片到服务器的过程中,主要涉及以下几个关键知识点: 1. **文件I/O操作**:客户端首先需要从SD卡或其他存储位置读取图片文件。这里使用`FileInputStream`读取图片文件,然后...

    android webservice by thread

    通过在MainActivity中创建线程,实现调用webservice。webService_thread是通过Runable和Thread创建的线程,webService_thread2是通过Callable和Future创建的线程。 和此代码配套的文章 ...

    android 访问webService Demo

    在这个“android 访问webService Demo”中,我们将探讨如何在Android应用中集成和使用Web Service,尤其适合初学者快速上手。 一、理解Web Service Web Service是一种跨平台的通信机制,它允许不同的应用程序通过...

    Android 上传文件到c# webservice

    在本场景中,我们讨论的是如何将Android设备上的文件上传到由C#编写的Web服务(WebService)。以下是对这个过程的详细解释: 1. **Android端的文件选择与读取**: - Android应用首先需要获取用户选择的文件。可以...

Global site tag (gtag.js) - Google Analytics