ksoap2 传递复杂对象 复杂数据类型
来源:互联网 发布:免费下载skype软件 编辑:程序博客网 时间:2024/06/05 00:12
http://blog.csdn.net/jietoulangren/article/details/7551319
关键:
SoapObject so = new SoapObject("http://vo.com.cn/xsd","Diary");
Android客户端调用服务端的方法时需要提供方法需要的参数,这个参数可能是一个简单类型,如字符串或者int值,
也可能是服务端定义的一个复杂数据类型。同样的,服务端返回的可能是一个简单数据值,或者是一个复杂数据对象,
这里讲一下我的实现方法。部署了一个webservice:DiaryService.下面这张图是该服务的wsdl头部描述:
- //创建请求,参数分别为Web服务访问地址、调用的方法,此处调用的是插入日志方法,需要传入一个日志对象
- SoapObject request = new SoapObject("http://ws.apache.org/axis2", "insertDiary");//此处的url即为wsdl中的targetName
- HttpTransportSE androidHttpTransport = new HttpTransportSE("http://10.0.2.2:8080/axis2/services/DiaryService?wsdl");
- //创建SoapObject,根据服务端的对象声明来封装数据
- //这里比较关键,客户端不需要新建对象,可以直接将数据封装在SoapObjec对象中进行传递,至于序列化反序列化的工作,ksoap已经帮我们做了
- //如果只是传递一个简单数据,而不是对象,则只需将数据通过addProperty封装到之前新建的SoapObject对象request中即可
- SoapObject so = new SoapObject("http://vo.com.cn/xsd","Diary");//注意此处的路径
- //封装日志数据,这里查看wsdl对于对象的描述,一个属性对应一个值进行封装
- so.addProperty("date",new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date()));
- so.addProperty("theme",view1.getText().toString());
- so.addProperty("content",view2.getText().toString());
- //设置方法属性,前者为WSDL中方法的形参,后者为实参
- request.addProperty("vo", so);
- SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
- envelope.dotNet = true;
- envelope.bodyOut = androidHttpTransport;
- envelope.setOutputSoapObject(request);
- try {
- //提交
- androidHttpTransport.call(null, envelope);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- }
至于获得数据,如果传回的是一个简单的数据,比如一个String或者Int值,那么返回的数据中只有一个SoapObject对象,获得这个对象便可得到返回的值
如果传回的是一个复杂数据容器,那么得到的是一个树状结构,其中会有多个SoapObject对象,具体操作见下面代码:
- if (envelope.getResponse() != null) {
- SoapObject result = (SoapObject) envelope.bodyIn;
- // result.getProperty("name");// name为属性的名称,如果是单条数据,则可以这样获得返回的数据
- //如果有多条数据,则可以这样获得数据
- int count = result.getPropertyCount(); //获得SoapObject对象的个数
- for(int i=0;i<count;i++){
- System.out.println("time", ((SoapObject)result.getProperty(i)).getProperty("date"));//获得时间属性值
- System.out.println("title", ((SoapObject)result.getProperty(i)).getProperty("theme"));//获得主题属性值
- System.out.println("info", ((SoapObject)result.getProperty(i)).getProperty("content"));//获得内容属性值
- }
- }
0 0
- ksoap2 传递复杂对象 复杂数据类型
- Android平台下使用Ksoap2调用传递复杂对象
- Android通过ksoap2传递复杂数据类型,服务端为CXF发布的webservice,亲手写的代码
- 关于android中webservice使用ksoap2传递复杂对象的研究
- Intent 传递复杂对象
- 进程间复杂数据类型传递
- 简单数据类型和复杂数据类型值传递
- 用Axis2 传递复杂对象
- 【Struts2】(4)复杂对象传递
- web service 传递复杂对象
- Android WebService 客户端 之 andriod ksoap2 WebService 复杂对象参数
- android 在activity之间传递复杂数据类型
- 编写传递复杂数据类型的远程服务
- android 用Parcelable传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- 传递复杂数据类型的远程Service
- Android继承Parcelable接口传递复杂数据类型
- cocos2d-x之字体描边效果shader实现
- 常用正则表式
- Linux SDK之uClinux、Broadcom、Atheros、Realtek、Ralink
- 关于Sate210/Sate210-F eMMC(iNand)核心板的android4.0 分区修改
- 题目1374:所有员工年龄排序
- ksoap2 传递复杂对象 复杂数据类型
- win7下完全卸载oracle11g
- 嵌入式操作系统内核原理和开发(总结篇)
- UVA 11549 - Calculator Conundrum(模拟+周期规律)
- linux下的C语言编程(总结篇)
- 感慨:程序人生,人生程序。(面向对象的奇葩理解)
- vmware tools安装
- 第五十四天【java虐我千百遍,我待java如初恋】
- 学期小总结