前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android端调用c#端的webservice——复杂数据类型传递

Android端调用c#端的webservice——复杂数据类型传递

作者头像
code2roc
发布2023-07-19 14:19:03
2100
发布2023-07-19 14:19:03
举报

一、概述

相信许多android安卓初学者和我一样,一开始认为的android调用webservice不过是按照固定的模式修改一下

namespace和methodName就可以顺利的调用所需要的webservice。其实在真正的业务流程中,由于业务需求的不

同,普通的数据库对象所传递的数据已经不能满足一般的数据需求,所以我们要在webservice端拼接自己需要的对象

传递到客户端,但在android端使用ksoap2的解析方法并不能直接识别拼接对象,这就需要我们合理的规划好

webservice部分的数据解析结构,才能清晰明了的得到数据和添加不同的数据对象。

二、规划webservice解析的程序结构

1.创建简单的构造函数,分为带参数和不带参数

2.进行相应的webservice调用的对象准备

3.进行调用,在调用之前,我们要对传递过来的对象进行Javabean形式的创建,传递过来的对象有很多种,我们给它

们创建一个父类SoapItem里面什么都不需要写,只是为了后面让代码可扩展一些。然后,所有传递过来的对象都根据

数据库对象的字段创建一个类并继承自SoapItem,而且所有的对象都要完成一个接口ConvertSoapItem,这个接口是

用来给每个对象添加一个解析对象的方法,使从webservice端传递过来的对象的解析过程都可以在自身的类里面完成

相当于是一个简单的封装

下面看一下两种简单的调用方法

在第二种需要返回结果的调用方法中,我们一律使用list来返回一个对象类表,把传递过来的soapobject传递给自己

相对应的自建对象并在内部解析后返回一个对象列表,下面可以看一下一个类的解析,就是把soapobject每个节点的

值拿出来赋给对象的一个字段,并不复杂

三、向webservice端传递复杂数据类型

1、自定义对象的传递

前面讲完了webservice端向android传递数据,下面我们来讨论一下当webservice端的一个方法需要的是一个自定义类

型的对象参数时我们该怎么办?我们这个时候就需要用到ksoap2中的一个自带接口KvmSerializable,对象完成这个

接口后需要完成4个未完成的方法

第一个方法就是用swith语句按顺序写你的自定义对象的字段名

第二个方法就是返回你变量个数

第三个方法就是规定你的每个变量的类型和名称

第四个方法就是为你的变量赋值

完成这四个方法以后还需要在webservice端创建一个一模一样的对象,但不需要完成KvmSerializable接口,注意对象

名大小写要区分,如下图所示:

2、数据集合的传递

在webservice在带有参数的数据库调用操作时,我们不可能每修改一条数据就调用一次webservice这样不仅不高效率

,而且会因为多次的网络通信而等待过长的时间从而降低用户体验,所以这个时候我们就需要一次性传递数据,但是

在ksoap2中并不支持数组的传递,所以我们要把集合包装秤一个自定义对象传递过去,我们创建一个类继承自

Vector,Vector自身是一个容器,和arraylist的用法差不多,置于其他的集合类能否这样做没有尝试,不做过多的评

论。Vector完成了KvmSerializable接口后里面没有参数怎么重写方法呢,可能这是很多人一开始的问题,其实这很好

理解,既然这是个容器,那你添加进来的数据不就是一个个自身的参数么,这样就好理解多了吧,不多说,上个例

子。

复杂类型数据的传递差不多就这些了吧,希望大家多多支持。

Tip:调用webservice的过程中如果要调用Toast显示信息一定要前后分别加上Looper.prepare()和Looper.loop(),不加

的话会造成队列的唯一性冲突。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com