• 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调用获得的对象转换成对象

    View Code
    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 SDK 国内镜像及配置方法
    Python多线程学习
    JProfiler 8下载地址和注册码
    Python自动化测试工具Splinter简介和使用实例
    linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法
    Linux系统安装VMware Tools
    CentOS minimal网络设置
    接口测试之webservice
    VirtualBox-Linux系统安装增强功能
    PhantomJS快速入门
  • 原文地址:https://www.cnblogs.com/LIANQQ/p/2836855.html
Copyright © 2020-2023  润新知