在移动客户端操作系统是Android并且服务端通过Web Service提供编程接口的情况下,实现了客户端与服务器端的信息交互。本文主要依托车辆检验系统中的手持安卓终端和Web服务通信过程为例,对Android客户端和Web Service结合构建可扩展、易于维护的应用系统提供了高效的方法。
【关键词】Android Web服务 XML 数据通信
1 引言
随着移动设备、网络的快速发展,手持终端大有取代传统PC终端地位的趋势,更多的应用在向移动终端迁移。在IOS、Android、Windows Phone这三大移动平台中,以Android平台的应用最广。由于移动终端存储空间和芯片性能的限制,大多Android应用都采用客户端/服务器的模式。此类Android应用的关键点就在于移动端与服务器端的交互,选择一种安全、快速、通用、数据通信量小的数据通信方法对移动设备来说是非常重要的。
2 关键技术
2.1 Android应用系统框架
Android可以通过Http、套接字(Socket)、Web Service、远程调用协议(RPC)与服务器进行交互。但是基于Socket的传输只适用于安全性、实时性高的应用;HttpClient高效稳定,但是维护成本高昂;RPC可跨语言跨平台,但是在编译期无法排错。而Web Service可以直接利用Web服务的监听。已逐渐成为Web上的重要组件,提供松耦合机制,所基于的协议充分开放,是创建可互操作、分布式应用程序的新平台,并且具有一个:为无线设备提供服务j基于以上优点本系统选择运用Web Service进行Android客户端与监管平台服务器端的通信。
2.2 Web Service
Web service是一个平台独立的、松耦合的、自包含的、基于可编程的Web应用程序,可使用开放的XML(Extensible Markup Language,可扩展标记语言)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。在Web Service模型的中,一共有三种工作角色,其中服务提供者(服务器)和服务请求者(客户端)是必须的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了Web服务的架构。
3 系统架构设计
本文依据中华人民共和国机动车安全技术检验项目和方法(GB 21861-)构建的最新车辆检测平台的手持终端检测设备为例。来进行说明。在检测平台中,检测系统由两部分构成,一部分是手持设备,用于进行车辆外观、车辆底盘和底盘动态三项检测。由手持终端将采集的数据以JSON格式,发送到Web服务端,再由Web程序将数据存储到本地数据库。同时,要通过公安部门监管平台的Web服务接口即时上传检测结果,其中手持终端采用Android平台,监管平台部署在WebSphere上采用Web服务和客户端通信。;第二部分是由检测线用于采集其余相关车辆数据,由控制中心将传感器采集到的数据存储到本地数据库。同时,要通过公安部门监管平台的Web服务接口即时上传检测结果。过程如图1,本文以手持终端和监管平台之间的通信为例进行研究。
4 关键实现
下面以Android手持终端与监管平台Web服务通信接口间交互的读接口数据操作为例,详细介绍Android终端与部署于应用服务器的Web Service的通信过程。
4.1 监管系统接口说明
检验监管系统对外接口访问地址:http://ip:port/pnweb/services/TmriOutAccess?wsdl
其中IP标识Web服务器地址;port对应系统应用服务的端口号,启用80的不填写。
检验监管系统对外接口包括两类:查询类和写入类接口。查询类接口对外提供查询服务,写入类接口对外提供将业务数据写入检验监管系统业务库。本文以查询类接口使用为例进行描述接口参数见表1,查询类接口如下:
public String queryObjectOut(String xtlb,String jkxlh,String jkid,String QueryXmlDoc)
4.2 Android端接口调用
在Android中调用Web服务,获取待检测车辆需要的检测项目。关键代码如下:
String SOAP_ACTION=Pace+QueryName; //将方法名和命名控件绑定
SoapObject request = new SoapObject(Pace,QueryName);//设置要返回的对象
//设置需要返回请求对象的参数
request.addProperty("xtlb",xtlb);
request.addProperty("jkxlh",jkxlh);
//设置soap版本
SoapSerializationEnvelope envelope= new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.bodyOut = request;
int timeout=10000*60; //超时设置
HttpTransportSE trans = new HttpTransportSE(SERVER_URL,timeout);
trans.debug = true;
trans.call(SOAP_ACTION, envelope);
object= (SoapObject)envelope.bodyIn; //获取返回的数据
返回的待检测项目项目构成的XML文件如下(其中wgjyzp、zlzp、cyzp字段就是待检测项目编号,中间用逗号分割):
0111,0112,0113 2
成功
0201,0202,0203,0204,0205
0111,0112,0113
1
01,02,03,04,05,09,16,17,18,19,20,21,22,23
4.3 XML解析
XmlPullParse的工作原理:XML pull提供了开始元素和结束元素。当某个元素开始时,我们可以调用parser.nextText从XML文档中提取所有字符数据。当解释到一个文档结束时,自动生成EndDocument事件。
StringWriter writer = new StringWriter();
XmlSerializer serializer = Xml.newSerializer(); //创建一个XmlSerializer实例
serializer.setOutput(writer); //设置输出方向为writer
serializer.startDocument("GBK", null);
serializer.startTag("", "root");
serializer.startTag("", "head");
serializer.startTag("", "zlzp"); //解析zlzp字段
serializer.text(wie.getZlzp()); //取zlzp字段值,赋给wie的zlzp属性
serializer.endTag("", "zlzp");
.......
serializer.endTag("", "head");
serializer.endTag("", "root");
serializer.endDocument(); //XML文档结束
5 总结
经过测试,系统实现了预期的功能。并且系统可靠性强,维护简单,能在专用网络中可靠的和监管中心通信。实验证明通过Web Service系统也可以非常灵活的部署和升级,服务信息修改后,只需要重新发布服务,客户端直接调用即可。同时移动应用的开发选择方式很多,采用Web Service进行移动应用的开发给Android客户端与服务器端的通信提供了一种标准化的方式。Android用户界面的丰富性、操作简便性与Web Service的跨平台可操作性,两者的结合对移动应用的开发提供了一个更好的发展方向。本文所提供的方法易于移植到IOS及Windows Phone系统的应用开发中。
参考文献
[1]龚瑞琴,毕利.基于Web Service的Android技术应用研究[J].计算机技术与应用,.
[2]龚成莹,邢敬宏,胡银保.基于JSON的Android移动终端与PHP及MySQL数据通信[J].工业仪表与自动化装置,.
[3]权重民,彭听昀.利用JSON实现Android高效、安全访问远程数据库的一种方式[J].韶关学院学报,.
作者简介
姚世明(1979-),男,江苏省姜堰市人。大学本科学历。现为南通科技职业学院讲师,从事高校教学工作。
作者单位
南通科技职业学院 江苏省南通市 226007