《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于Web Service的Android技术应用研究
基于Web Service的Android技术应用研究
来源:电子技术应用2014年第1期
龚瑞琴, 毕 利
宁夏大学 数学与计算机学院,宁夏 银川750021
摘要: 在客户端与服务器间通过web Service进行通信,给出Android应用程序开发的完整过程,服务器端基于Java的SSM结构,利用Web Service实现访问接口,Android客户端通过Ksoap调用Web Service,并以网格化管理为例,最终实现了Android客户端与服务器灵活信息交互。
中图分类号: TP391
文献标识码: A
文章编号: 0258-7998(2014)01-0134-03
Research on android technology based on Web service
Gong Ruiqin, Bi Li
Department of Mathematics and Computer Science, Ningxia University, Yinchuan 750021, China
Abstract: Between the client application and the server, the Web Service is used to implement communication. A complete Android application development process is presented. The server uses a Jave-based SSM structure, making use of the Web Service to implement access interface, and Android client uses Ksoap to call Web Service, and as a case study of grid management. The flexible information interaction between Android cliend and server is ultimately achieved.
Key words : Web Service; Android; Ksoap2; mobile application; grid management

    Android平台的开放性、不受束缚性以及环境的自由性使其拥有更多的开发者 [1]。利用Android的优势对系统进行研发,对研究、开发者有一定的参考意义。面向服务架构(SOA)的实现技术,便于异构系统互联、组合,得到了广泛的关注。网络服务(Web Service)作为SOA的一种实现技术是最常用的移动架构,但独立的移动应用需要把内容存储在移动设备上,浪费了大量存储空间。为了解决这个问题,可采用分布式的移动应用,只在需要时加载,即可Web服务可满足独立于平台的应用程序并支持分布式系统应用[2]。
1 Android应用系统框架
    Android可以通过Http、套接字(Socket)、Web Service、远程调用协议(RPC)与服务器进行交互。但是基于Socket的传输只适用于安全性、实时性高的应用;Httpclient高效稳定,但是维护成本高昂;RPC可跨语言跨平台,但是在编译期无法排错。而Web Service可以直接利用Web服务的监听,已逐渐成为Web上的重要组件,提供松耦合机制,所基于的协议充分开放[3],是创建可互操作、分布式应用程序的新平台[4],并且具有一个:为无线设备提供服务。基于以上优点本系统选择运用Web Service进行Android客户端与服务器端的通信。
 以网格化管理平台为例,介绍Android平台下通过利用Web Service对服务器进行数据访问和通信,图1所示为系统结构图。

2 网格化管理平台设计与实现
2.1 系统应用背景

    网格化管理是社会的一个趋势,借助先进的信息技术,对承担社会管理的职能部门和社会资源进行协调,最大限度地发挥资源共享的优势,提高社会管理服务水平。城市网格化管理是一种革命和创新,将城区划分为“网格”,使这些网格成为政府管理基层的单元,利用网格化的特点将数据、事件进行整合。在这样的趋势下,利用移动设备,可以随时随地进行信息的采集、查询,使得基于网格化的信息管理更加便利高效。
2.2 系统架构介绍
    客户端使用AndroidSDK2.2版本,Android开发插件ADT的eclipse软件服务器端采用SSM(Struts2.0,Spring,Mybits)架构及数据库Oracle、axis进行服务的发布,并借助KSOAP来调用Web Service。KSOAP是一个库,基于SOAP(Simple Object Access Protocol)框架,通过调用KSOAP可实现Android客户端与服务端的数据交互。系统实现流程如图2所示。

2.2.1 服务器端实现
    服务器端实现是通过基于Java的SSM框架,利用Mybits翻转数据库形成基本的Model层,View利用客户端来显示具体信息。Controller控制层由Struts2实现,Spring进行业务逻辑的处理。
    (1)用户权限的设置
    不同的用户根据不同的权限登录,看到的界面及功能不同,并且根据权限的不同,看到的信息和处理的事件也不同。
    (2)应用Entity
    数据库底层通过Mybits实现数据库的翻转,把实体自动持久地转换到数据库中,形成entity文件及mapper文件(包括增、删、改、查的实现),配置的部分代码为:
    <table tableName="t_wggl_wgsx"
    domainObjectName="Wgsx>
    <generatedKey column="wgsxid"
    sqlStatement="select wggl_wgsx _seq.nextval as wgsxid from dual" type="pre" >
    </table>。
    (3)接口的声明
    声明网格事项新增的方法,并且还需区分未处理或转督办的事项,同时包括获取网格事项的详细信息,其中操作不包含核实及核实办理结果。方法代码如下:
    public String addWgsx(Wgsx wgsx,Lzjl lzjl,String fj)。
    定义添加网格事项信息的方法,包括事项基本信息、处理状态、流转信息以及要添加的附件信息。public String getDbList()通过此方法获取备案信息,领导者可以查看相应的处理情况,而办事人员登录时会获得其权限,根据权限查看并办理相应的事项。
    (4)方法实现
    首先要获取事项所在的网格,并且要获取JSON(Java Script Object Notation)对象,将数据转换成JSON数据,在Android端获取此数据并进行展示。
    (5)服务的发布
    在方法中实现了方法名称、参数的具体服务过程。系统使用Axis2服务发布技术,它支持Web 服务描述语言(WSDL),在服务器端发布服务之后,可以看到WSDL的内容,包括服务的命名空间(WSNS)、服务名称、服务的方法、参数等信息,这些信息供客户端调用。网格事项的服务配置部分代码如下:
    <description>网格事项service</description>
    <parameter name="ServiceObjectSupplier"> </ parameter>
    <parametername="SpringBeanName">WgsxService</parameter>。
    通过部署可以看到发布的服务信息,即客户端获取的信息。
    (6) 数据交换
    服务器端要声明JSON,JSON数据是一种轻量级的数据交换格式,是完全独立于语言的文本格式,该数据提供了更好的灵活性和简单性。服务器和客户端实现数据交换,需在网格事项方法的实现中将结果转换成JSON格式的数据,即JsonUtil.object2json(resultMap)。
2.2.2 客户端具体实现
    系统运用第三方Ksoap2来实现Android客户端与服务端的数据交互,改进了对Microsoft dotNet的兼容,是一种不需要形成代理的,调用Web Service的方法。可通过实例SoapObject指定WebService命名空间,调用方法名称,在activity中实现获取服务器端信息。
    Layout使用LinearLayout布局,系统下拉框信息是字典的形式,在SqlLite数据库中进行转换,放入Android客户端。
    当客户端发起网格事项的请求时,需要查找发布的服务信息,在Wgsxmanager.java中写出发起服务的名称、命名空间以及方法名,添加网格事项的服务代码如下:
    private static final String URL=MyURLActivity.URL+"/services/wgbaService?wsdl";
    定义服务的路径,
    private static final String NAMESPACE="http://impl.service.wgsx.zhxxpt.com";
    定义服务的命名空间,
    private static final String METHOD_NAME="addWgsx";
    定义服务中调用的方法名,
    方法的具体实现以及服务器信息的获取,怎样将网格事项的信息保存到服务器端的数据库中,都要在wgsxactivity.java中具体实现,其中页面属性要与layout布局设置的id一致,同时要获取JSON数据。主要方法有:(1)initWgxx();初始化网格信息,不同网格查看不同网格事项信息;(2)findViewById(),初始化控件;(3)setListener(),设置监听;(4)initViewValue(),初始化控件。
2.2.3 页面间参数的传递
     页面间的跳转以及参数的传递,需要将传递参数的页面信息附带到要跳转的页面,通过定义JSON数据获取要传递的数据。通过如下代码实现参数的传递:
    Intent intent = new Intent();
    intent.putExtra("cxResult",jsonObj.getString("result"));
    intent.setClass(WgsxActivity.this,WgsxcxListActivity.class);
    WgsxActivity.this.startActivity(intent);
上述代码表示把网格事项传递到网格事项列表这个页面中。而在接收此参数的页面只需运用以下代码就可以获取上一个页面传递过来的信息:
    String cxResult = this.getIntent().getString
    Extra("cxResult");
3 实验分析
    运行系统流程为:启动服务端,在客户端配置服务器端地址,通过运行Android应用程序形成apk文件。当客户端发起请求,首先找到匹配的服务,通过Web Service获取服务端的信息,最后将信息显示在移动设备上。图3所示为事项备案的录入,包括附件的上传(可即照即传),下拉框信息在数据库以字典代码形式保存,减少了数据库的存储量。

 

 

    通过运用Web Service技术实现Android客户端与服务端数据的交互,在系统中Android客户端请求服务,实现了数据录入、信息展示、图片获取以及利用系统的Service实现了图片信息的定位。考虑到安全问题,最后对形成的apk进行加密。
    经过测试,系统实用性强,维护简单,能随时随地进行信息的录入和展示。实验证明通过Web Service系统可非常灵活的实现,服务信息进行修改后,只需要重新发布服务,由客户端调用即可。
    移动应用的开发选择方式很多,采用Web Service进行移动应用的开发给Android客户端与服务器端的通信提供了一种标准化的方式。Android用户界面的丰富性、操作简便性与Web Service的跨平台可操作性,两者的结合对移动应用的开发提供了一个更好的发展方向。
参考文献
[1] BURNETTE E. Android: Introducing Google&rsquo;s mobile development platform(2nd edition)[M]. The Pragmatic Bookshelf, 2009.
[2] GUINARD D, TRIFA V, KARNOUSKOS S, et al. Interacting with the SOA-based internet of things:discovery,query, selection, and on-demand provisioning of Web Services[J]. IEEE Transactions on Services Computing, 2010,3(3):223-235.
[3] 王泽军,韩在峰.基于整合模式的EMS/SAS监控系统研究与实现[J].电子技术应用,2010,36(9):145-146.
[4] MANTANARI U. Web services and models of computation[J].Electronic Notes in Theoretical Computer Science, 2004,105(10):5-9.

此内容为AET网站原创,未经授权禁止转载。