在移动客户端操作系统是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-2015)构建的最新车辆检测平台的手持终端检测设备为例。来进行说明。在检测平台中,检测系统由两部分构成,一部分是手持设备,用于进行车辆外观、车辆底盘和底盘动态三项检测。由手持终端将采集的数据以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].计算机技术与应用,2014.

[2]龚成莹,邢敬宏,胡银保.基于JSON的Android移动终端与PHP及MySQL数据通信[J].工业仪表与自动化装置,2013.

[3]权重民,彭听昀.利用JSON实现Android高效、安全访问远程数据库的一种方式[J].韶关学院学报,2011.

作者简介

姚世明(1979-),男,江苏省姜堰市人。大学本科学历。现为南通科技职业学院讲师,从事高校教学工作。

作者单位

南通科技职业学院 江苏省南通市 226007

android web sevice,Web Service在Android开发中的应用研究相关推荐

  1. android exchange服务,带有“ Service com.android.exchange.ExchangeService

    我正在用Android开发一个非常简单的应用程序.我制作了一个启动屏幕,主菜单以及一个带有单选按钮和一个按钮的页面(该按钮会根据选中的单选按钮播放声音).该应用程序运行正常(不会崩溃),但是我一直在l ...

  2. android怎么监听多点触摸_Android开发中多点触摸的实现方法

    Android多点触控需要LCD驱动和程序设计支持,其实我们只要采用电容屏触摸手机的技术即可,接下来,就让爱站技术频道小编来讲解Android开发中多点触摸的实现方法吧! 多点触摸技术在实际开发过程中 ...

  3. Fonticon在企业移动APP开发中的应用研究

    其实FontIcon已经不是什么新技术了,简而言之就是:用字体文件取代图片文件,来展示图标.特殊字体等元素的方法. 现在应用较多的地方是在web开发上,APP开发中也有很多地方会使用到fonticon ...

  4. iOS和android h5字体差异,关于移动hybrid开发中H5页面的字体应与系统保持一致的问题...

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 0.问题来源 在移动hybrid开发,也就是说,部分页面会使用html+css+javascript技术来制作,例如个人 ...

  5. 【Android】Google Plus---Google Service用于Android APP

    翻墙后再继续往下看 官方链接 ---------提纲------- 提纲: 1.创建Client ID 2.安装google 框架 3.Andorid Studio配置google service - ...

  6. android开启多个service进程,Android开启多进程

    1. 为何要开启多进程 为何开启android应用要开启多进程,主要有以下几点: 单进程所分配的内存不够,需要更多的内存.在早期android系统只为一个单进程的应用分配了16M的可用内存,随着手机的 ...

  7. android日志管理最佳策略,深入Android应用开发:核心技术解析与最佳实践

    资源名称:深入Android应用开发:核心技术解析与最佳实践 内容简介: 如何才能真正进阶为Android应用开发高手?必须深入理解Android核心技术的底层原理和在开发中总结并使用各种最佳实践,别 ...

  8. android+显示html内容居中显示图片,Android开发中对HTML内容的显示

    摘 要 随着Android科技的发展,手机客户端接受了更多的HTML内容.本文作者采用WebView直接显示法结合人机 >> Android开发中的主题设置研究 线程在Android开发中 ...

  9. Android之四大组件(Service的开启与关闭)

    个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! 前言 服务(Service)是Android系统中的四大组件之一.服务主要用于两个目的:后台运行和跨进程访问.通过启 ...

  10. Android知识点及资料汇总(不断更新中)

    /// //版本:0.1 //主要内容:根据思维导图的知识点,对之前收藏夹的内容进行分类. /// 之前转载过一篇题目为<一张思维导图,告诉你Android新手如何快速入门>的文章,这篇文 ...

最新文章

  1. 女程序员也有35岁危机焦虑吗?
  2. 栈的逆转(递归实现)
  3. pytorch模型的保存与加载
  4. ASP.NET Core 中间件之压缩、缓存
  5. mysql5.6.24教程,mysql5.6.24升级5.7.27之错误汇总
  6. GoF的23个经典设计模式
  7. vue使用axios并存数据到state
  8. android 名片识别 简书,iOS 自己实现 名片识别 三 图片处理
  9. OpencV使用fitEllipse拟合椭圆后,获取椭圆参数
  10. SAP License:ERP系统和OA系统的区别?
  11. vue drag函数拖拽效果实现
  12. 周鸿祎的“花房上市”执念
  13. 认识PV、UV、UV价值
  14. PHP中?是什么意思,有什么用?
  15. FUZ 1759 Super A^B mod C (指数循环节/模板)
  16. 【STM32】 电解电容
  17. 深入研究HashMap
  18. CH340G usb转串口模块 稳定鸭 板子电路图和元件排位图
  19. ZZULIOJ:1171-1180
  20. 山东大学项目实训十三——FFmpeg

热门文章

  1. 读书笔记:余华--《活着--这是一本书》
  2. 一、网络安全专有名词汇编详解(黑话指南)-史上最全
  3. AVC1与AVC与H264
  4. Qt4--加密日记本(子例化QMainWindow文本加密解密)
  5. FishC笔记—14 讲 字符串:各种奇葩的内置方法
  6. OpenCV3.1安装包下载
  7. 支付宝出征世界杯!白岩松:“中国除了足球队没去,其他都去了”
  8. 用 Python 可视化分析全球火山分布,发现了这些有趣的现象
  9. c语言函数定义的语法格式,C语言函数 -C语言函数定义的语法格式
  10. 超市库存管理java sql_超市仓库管理系统的设计与实现(MySQL)