android webservice

来源:互联网 发布:淘宝处罚条例 编辑:程序博客网 时间:2024/05/19 04:53

/**

* 转换返回数据为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;

    }

0 0
原创粉丝点击