转--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; }
分类:
网络
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术