• 转--Android中调用webservice的工具类


    最近学习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;    
        }    
    复制代码
  • 相关阅读:
    find命令 -- 之查找指定时间内修改过的文件
    nginx
    lighttpd 搭建
    mysql主从复制5.6基于GID及多线程的复制笔记
    centos下MySQL主从同步配置
    数据库集群搭建
    linux 系统监控、诊断工具之 top 详解
    Linux下Apache并发连接数和带宽控制
    DXGI屏幕捕捉
    CUDA以及CUDNN安装配置(WIN10为例)
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4370530.html
Copyright © 2020-2023  润新知