利用JSON实现Android高效_安全访问远程数据库的一种方式_第1页
利用JSON实现Android高效_安全访问远程数据库的一种方式_第2页
利用JSON实现Android高效_安全访问远程数据库的一种方式_第3页
利用JSON实现Android高效_安全访问远程数据库的一种方式_第4页
利用JSON实现Android高效_安全访问远程数据库的一种方式_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用JSON 实现Android 高效、安全访问远程数据库的一种方式权重民1,彭昕昀2(1.西安思源学院信息化办公室,陕西西安710038;2.韶关学院物理与机电工程学院,广东韶关512005摘要:随着手机及移动设备的快速的发展,越来越多的移动终端需要访问数据库服务器,利用JSON 通用标准封装,通过HTTP 协议传输,利用Web 应用服务器访问数据库,并且使用加密和压缩保证了数据传输的效率和安全,非常适合中小型移动程序的实际应用.关键词:Android ;数据库;JSON ;Web 应用服务器中图分类号:TP392文献标识码:A 文章编号:1007-5348(201112-0016-05韶关

2、学院学报·自然科学Journal of Shaoguan University ·Natural Science 2011年12月第32卷第12期Dec.2011Vol.32No.12收稿日期:2011-10-25作者简介:权重民(1974-,男,陕西西安人,西安思源学院信息化办公室工程师,硕士,主要从事计算机网络及数据库方面的研究.近2年,随着智能手机及平板电脑的快速发展,同时伴随着3G 网络的逐渐普及,移动开发越来越受到开发人员的青睐,而谷歌推出的Android 系统以其开放、优秀的特性很快受到开发人员的推崇,很多知名网站都推出了Android 客户端版本,例如腾讯、新

3、浪、淘宝都有对应的版本.同时很多数据库应用程序都从原来的Windows 桌面程序延伸到移动设备上,由于移动设备的性能及内存等肯定无法与台式机及笔记本电脑相比,访问数据库也不可能像桌面安装各种数据库的客户端,当然目前绝大多数数据库也没有直接运行在移动设备的客户端,由于手机及移动设备很多时间都是利用3G 通过互联网访问远程数据库的,为了能够让手机及移动设备访问后台数据库,必须选用一种通用、快速、安全的方法.经过各种方式的测试及实验,笔者选用了JSON 作为Android 设备访问Web 应用服务器的中间桥梁,再通过Web 应用服务器访问数据库的,并对数据传输过程进行压缩和加密,实现了高效、安全的数

4、据库访问,并经过实际应用,效果较好,达到了预期要求.1JSON 的基本原理及访问数据库实现JSON(JavaScript Object Notation是一种轻量级的数据交换格式.JSON 可以将JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web 客户机传递给服务器端程序.这个字符串看起来有点儿古怪,但是JavaScript 很容易解释它,而且JSON 可以表示比名称(值对更复杂的结构.例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表1.因此JSON也非常适合传输数据库的记录类型,图1为直接返回JSO

5、N 运行模式 .第12期Android 设备要访问远程数据库,先通过HTTP 协议,发送数据请求给后台Web 应用服务器,应用服务器根据请求,生成相应的SQL 语句访问数据库服务器,并把读取的数据库内容封装成JSON 格式,通过HTTP 协议回传给Android 设备,Android 设备再对JSON 解析,并显示到对应的UI 上,如图1所示.考虑到应用服务器丰富的数据库连接特性及高效的HTTP 处理能力,并可运行在Windows 和Linux 下2,采用Del -phi 编写.Android 客户端开发主要使用Basic4Android,这个产品使用Basic 语言开发Android 程序,

6、其封装了大量的Java 类,简化了很多复杂的语法,非常容易上手,同时提供了强大的开发能力,并且支持各种复杂的HTTP 协议的应用.为了实现数据库字段及内容通过HTTP 协议传输,首先需要把数据库字段封装为JSON.现有一个表,用来表示学生信息,其结构为:create table XSJLB(nf VARCHAR2(4not null,xh NUMBER(22not null,xm VARCHAR2(30,xb VARCHAR2(2,csny DATE,sfzh VARCHAR2(18,zzmm VARCHAR2(32,mz VARCHAR2(16,lysfdm VARCHAR2(6,lysfm

7、c VARCHAR2(30,lydsdm VARCHAR2(6,lydsmc VARCHAR2(30,lyqxdm VARCHAR2(6,lyqxmc VARCHAR2(30,byxx VARCHAR2(40,hkzh VARCHAR2(18,hkcj NUMBER(22,2,jg VARCHAR2(30,lxdz VARCHAR2(200,lxdzyzbm VARCHAR2(6,lxdh VARCHAR2(40,lxr VARCHAR2(30,dzyx VARCHAR2(40,bmzyflxh NUMBER(6,bmzyxh NUMBER(4,xxly VARCHAR2(40,bz VARC

8、HAR2(2000,sysbz VARCHAR2(1,fwq VARCHAR2(40,bmfs VARCHAR2(40,czsf VARCHAR2(40,cjczy VARCHAR2(32,cjsj DATE,czy VARCHAR2(32,czsj DATE,lyip VARCHAR2(23,sbz VARCHAR2(1,ssj DATE,knx NUMBER(22,3,jbrbm VARCHAR2(8,qq ARCHAR2(15.经过JSON 封装后就会变成以下格式:"topics":"BMZYMC":"u5e02u573au8425u95

9、00","LYSFMC":"u9655u897fu7701","LYQXMC":"u6d1bu5dddu53bf","LYDSMC":"u5ef6u5b89u5e02","XM":"u738bu718au535a","XH":"60535","XB":"u7537","QQ":"","MZ"

10、;:"u6c49u65cf","BZ":"","BMZYFLMC":"u6587u7ba1u4e13u79d1u65b0u5e72u7ebf","SFZH":"610629*","NNNZ":"1","LXDZ":"u9655u897fu7701u6d1bu5dddu53bfu767eu76ca","LXDH":"152*","

11、CSNY":"1992-08-18","CJSJ":"2011-10-26","BYXX":"u6d1bu5dddu4e2du5b66","BMFS":"u6821u5185u804cu5de5","total -Count":"1",这一段JSON 封装文本是根据数据库里面的一条记录对应生成的.里面字段名后面跟着记录的值,例如“LYSFMC:u9655u897fu7701”,字段名是LYSFMC(来源省份

12、名称,“u9655u897fu7701”是陕西省的对应Unicode 编码.客户端通过HTTP 协议接收到JSON 封装文本后,通过内部的JSON 解析器,解析出对应的数据库内容,然后通过UI 显示出来.权重民,等:利用JSON 实现Android 高效、安全访问远程数据库的一种方式17··韶关学院学报·自然科学2011年图2为Android 主界面,其客户端解析JSON 代码示例如下:Sub loadxinxi(s As StringDim JSON As JSONParserDim Master As MapDim records As ListDim XIN

13、XI As MapDim recordcount As StringClearAllDim h(4As Stringh(0="序号"h(1="姓名"h(2="地市"h(3="日期"NumberOfColumns =h.LengthColumnWidth =SV.Width /NumberOfColumns 'update the columns widthsColumnWidth_1=ColumnWidth-ColLineWidthSetHeader(hIf s.Length<20ThenMsgbox

14、("没有报名信息","提示"ReturnEnd IfJSON.Initialize(smaster =JSON.NextObjectrecords=master.Get("topics"Dim data(4As StringDim row(As Stringshowcount=records.SizeFor i=0To showcount-1XINXI=records.Get(idata(0=xinxi.Get("XH"data(1=xinxi.get("XM" data(2=xinxi.get

15、("LYDSMC"data(3=xinxi.get("CJSJ"row =dataAddRow(rowNext 图2Android 主界面18··第12期recordcount=master.Get("totalCount"h(0="合计"h(1=recordcount&"条"h(2=""h(3="前"&showcount&"条"setfooter(hEnd Sub.2提高JSON的传输效率与

16、提高数据库访问效率虽然以上方式已经解决了访问数据库的问题.但是在实际应用中,该方式存在很大的问题.由于JOSN 是通过文本封装数据的,当记录条数比较多时,数据量非常大,由于移动设备大都是通过3G上网,带宽相对比较低,同时流量费用高,因此必须通过压缩来减少传输的数据量,由于Android设备支持标准的ZIP解压缩,因此在应用服务器同样采用ZIP压缩生成的JSON文本,经过测试原来的664条数据的JSON封装文本的大小约为64.3KB,经过压缩后,生成的压缩流约为8.97KB,不到原来大小14%,大大的提高了网络传输效率及访问数据库的速度,也减少了网络流量,节省了上网费用.由于在本方法里面采用了W

17、eb应用服务器,可以把频繁访问的数据库内容缓存到Web应用服务器,不同的这样客户端访问相同的数据时,不需要每次都到数据库里读取,大大减少数据库的访问操作次数,减少数据库的压力,提高数据库的访问效率.3加强远程访问的安全性随着移动终端及网络的快速发展,网络上数据传输的安全问题也越来越大,一旦出现安全问题,系统的信息就会泄漏失密,导致不可预测的后果.而Web应用服务器在互联网上是通过HTTP协议传输信息,都是通过明码传输的,可以通过软件或者硬件的方法得到HTTP传输的内容,这一点是非常不安全的,当然可以通过HTTPS实现安全传输,但是需要在服务器上安装证书,客户端也必须支持HTTPS,实际应用中比

18、较麻烦,因此考虑自行加密传输内容,并在客户端通过短信等方式给信任终端下发解密密码,Android设备使用下发的密码进行解密,恢复原 始数据.同样为了保证系统的通用性,服务器和客户端都采用3DES来加密和解密.4结语研究表明,在实际应用中必须使用压缩和加密来保证JSON传输的高效及安全性,并通过Web应用服务器缓存服务器数据,提高数据库访问效率,经过优化及改造后,整个系统运行方式如图3所示.虽然Android访问远程数据库的方法比较多,但是上述这种方法韶关学院学报·自然科学2011年比较灵活,通过HTTP 协议访问应用服务器,避免了防火墙造成的麻烦,同时对后台数据库没有特殊要求,支持目

19、前的各种流行的数据库,并可以根据实际应用将一些比较复杂的逻辑计算放到应用服务器上,客户端只需发送相应的HTTP 请求,并只处理返回结果,降低了移动终端的要求,同时保证了系统的高效及安全.另外由于本方法采用了JSON 及标准HTTP 协议,因此也同样适合IPhone 及IPad 应用,为各种移动设备高效、安全访问远程数据库提供了一种思路.参考文献:1Brett McLaughlin.使用JSON 进行数据传输EB/OL .2007-04-09. 开发与应用M .北京:机械工业出版社,2003.3Erel Uziel.HttpUtils -Android web services are now

20、simple!EB/OL .2005-05-15. -droid-getting-started-tutorials/9176-httputils-android-web-services-now-simple.html.An efficient and safe way of accessing remote databases byJSON in Android systemQUAN Zhong-min 1,PENG Xin-yun 2(1.Information Office,Xi an Siyuan College,Xi an 710038,Shanxi,China ;2.Institute of Physics an

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论