Android中调用webservice的工具类
生活随笔
收集整理的這篇文章主要介紹了
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; }?
轉載于:https://www.cnblogs.com/LIANQQ/archive/2013/01/04/2836855.html
總結
以上是生活随笔為你收集整理的Android中调用webservice的工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海动物园猩猩抱膝而坐带薪emo 网友:
- 下一篇: 坚持打造最好的日期控件,My97 Dat