【Android论文栏目提醒】:网学会员在Android论文频道为大家收集整理了“[精品]基于JSON实现Android智能终端与Web服务器_面向对象_的信息交换 - 期刊论文“提供大家参考,希望对大家有所帮助!
数字技术 学术论坛 与应用 基于 JSON 实现 Android 智能终端 与 Web 服务器“面向对象”的信息交换 王晓禹 石丽 沈阳理工大学信息科学与工程学院 辽宁沈阳 110159 通过分析
Android智能终端与Web服务器之间进行信息交换的传统方法存在的不足, 摘要: 提出了一种利用JSON数据格式和Google Gson API 实现从
Android智能终端到Web服务器之间完全 的信息交换新方式, “面向对象” 丰富和扩展了移动平台信息交换的能力,提高了移动互联网开 发的效率。
Android JSON Gson 面向对象 Servlet 关键词: 中图分类号: 11 TP3 文献标识码:A 文章编号: 1007-9416201204-0224-02 1 、 引言 逻辑业务层就可以调用数据持久层对 相应的逻辑业务层进行处理, 随着3G时代的到来, 移动终端不再只是通讯网络的终端, 将成 整个对象进行操作。
为移动互联网的智能终端。
开发以Android作为智能终端的移动互 3 、基于 J S O N 格式的“面向对象”信息交换的实现 联网项目越来越多, 由于现在Android开发典型的模式是云+端的 以实际项目中Android客户端向W e b服务器添加学生功能为 方式, 云就是互联网, 端就是Android智能终端, 所以需要解决的关 案例介绍如何基于JSON数据格式, “面 使用Google Gson API实现 键技术就是Android智能终端如何与Web服务器进行信息交互。
最 向对象”的信息交换。
常用的方式就是以X M L 格式的文件作为信息交换媒介, 但是其存 3.1 案例功能描述 在着许多不足, X 首先, M L 格式文件存储了大量的冗余信息, 相对 用户通过Android客户端 Android客户端具有添加学生功能, 于JSON格式的文件需要占用更多的带宽。
其次, 对其进行解析相比 Activity界面输入欲添加学生的属性信息, 然后单击 “添加” 按钮将 JSON格式的文件更复杂。
最后, 在企业级JavaEE项目中很多是使用 这些属性信息封装成Student对象, 通过Google Gson API将其眏 ( 框架开发的,其中在数据持久层 SSH Struts+Spring+Hibernate) 射为J S O N 格式的文本数据并以二进制流的形式发送给W e b 服务 中都是使用面向对象的对象关系映射框架开发的, 使开发人员完全 器, Web服务器响应请求信息将JSON格式的数据眏射成Student对 遵循面向对象的开发方法, 但采用以X M L 格式文件作为信息交换 象, 并利用数据持久层技术保存该对象。
媒介, 需要将数据持久层查询的对象眏射为X M L 文件然后传送给 3.2
Android 客户端和 Web 服务器的环境准备 Android客户端, 再由Android客户端进行解析并封装成对象, 或者 A n d r o i d 智能终端作为W e b 服务器的客户端需要引入与W e b 完成与上述过程相反的操作。
由此可见, 在信息交换时开发人员不 服务器交换信息时用到的Student类。
同时Android客户端和Web服 能像使用对象关系映射框架那样直接操作整个对象, 而要为每个欲 务器都需要引入Gson-1.7.1.jar文件。
传送对象编写对象到X M L 文件以及X M L 文件到对象的眏射程序, 3.3
Android 客户端向 Web服务器发送欲添加的 Student对 因此工作不仅繁琐而且不再遵循面向对象的开发方法。
于是作者提 象 出一种新的信息交换方法, 使开发人员在信息交换过程中只操作对 (1)Android客户端编写SendDataUtil工具类, 其中SendObject 象就可以了, 不需要考虑每一个对象属性解析和封装工作, 而使用 方法是利用Google Gson API将传入的Student对象生成JSON格 统一的方法进行开发。
式的文本数据, 然后根据U R L 地址提交到W e b 服务器上, 实现步骤 2 、基于 J S O N 格式的“面向对象”信息交换的原理 如下: JSON的全称是JavaScript Object Notation,即JavaScript对 首先, Android客户端通过HttpURLConnection 类与Web服 象符号, 它是一种轻量级的数据交换格式〔1〕, 采用完全独立于任何编 务器建立网络连接并完成H T T P 协议中各参数设置, 代码如下: 程语言的文本格式, 这些特性使J S O N 成为理想的信息交换格式并 public static void sendObject(String urlStr,Student student) 且逐渐成为了信息交换标准。
JSON建构于两种结构: “名称/值” (1) { URL url=null; “ 对的集合,名称/值” 可以表示对象的属性, 对象其实就是属性的集 HttpURLConnection httpConn=null; 合, 所以这个结构可以用来表示对象。
(2)值的有序列表, 可以表示 try 对象的集合。
因此J S O N 格式的数据完全能够描述一个复杂对象的 { 集合。
使用JSON格式的数据进行信息交换, 最大的问题是如何将对 url = new URL(urlStr);//获取网络连接 象转换为J S O N 格式的数据以及如何将J S O N 格式的数据解析并封 httpConn= (HttpURLConnection) url. 装成对象。
Google公司推出了一款Java开源工具Gson可以直接将 openConnection();//打开网络连接 Java对象转换为JSON格式的数据以及反向操作。
利用Google Gson httpConn.setDoOutput(true);//设 工具可以使开发过程完全关注于对象的操作, 实现基于J S O N 格式 置利用U R L 连接进行输出“面向对象” 的信息交换, 其过程如下: 1)Android客户端将需要发送 httpConn.setUseCaches(false);//不 的信息先封装成为类对象, 然后通过Google Gson API将其眏射 要使用缓存 为JSON格式的文本数据, 通过POST 方法以二进制流的形式将其提 httpConn.setConnectTimeout 交到Web服务器上。
2)Web服务器响应Android客户端发送的POST (5*1000); //设置网络连接超时时间 请求, 提取参数信息中JSON格式的文本数据, 通过Google Gson httpConn.setRequestMethod API将其反向眏射为类对象。
3)根据POST请求参数将该类对象交给 (”POST”); //设置网络请求方法 224 数字技术 与应用 学术论坛 httpConn.setRequestProperty(”Content- public class StudentAdd extends HttpServlet {Type”, ”application/x-www-form-urlencoded”);//设置内容 public void doPost(HttpServletRequest request,类型 HttpServletResponse response) 其次, 建立Gson对象, 将传入函数的Student对象转换为JSON throws ServletException,格式的文本数据, 拼接P O S T 提交的请求参数, 再发送给W e b 服务 IOException {器, 代码如下: request.setCharacterEncoding(”UTF-8”);/ Gson gson =new Gson();//建立Gson对 / 设置编码格式象 response.setContentType(”text/html”);//设 String json= gson.toJson(student);//将Student 置响应内容类型对象转换为J S O N 格式数据 String json=request.getParameter String result=”add=”+json;//拼接请求参 (”add”);//获取请求信息数 Gson gson =new Gson(); byte〔〕 data=result.getBytes();//获得欲输 //将JSON格式的数据眏射为Student对象出信息的字节流 Student student=gson.fromJson(json, Student. 最后, 设置H T T P 内容长度参数, 将请求参数写入网络输出流 class);中而后关闭资源, 代码如下:httpConn.setRequestProperty (2)调用数据持久层将眏射的Student对象保存到数据库中,代(”Content-Length”,String.valueOf(data.length)); 码如下: DataOutputStream outStream=new DataOutputStream StudentDao studentDao=new StudentDaoImpl(httpConn.getOutputStream()); (); outStream.write(data);//发送请求 studentDao.save(student);//调用数据持久层参数 保存Student对象 outStream.flush();//输出流中的缓 }}冲 至此Android客户端向Web服务器添加学生功能已经完成。
整 outStream.close();//关闭连接 个开发过程中, 所有操作始终以对象为单位进行, 简化了开发过程, } catch (Exception e) 同时使开发过程完全面向对象进行。
{ 4 、结语 e.printStackTrace(); } 本文分析了Android智能终端与W e b服务器之间进行信息交 } 换的传统方法存在的缺点, 提出了一种利用J S O N 格式数据作为信 (2)创建Android客户端的界面,将Student类属性信息通过该界 使用Google公司的Gson API来实现一种完全 息交换媒介, “面向对面进行收集并封装成S t u d e n t 对象, 通过S e n d D a t a U t i l 类的 的信息交换, 象” 使移动信息系统的数据交互开发更加方便、 更加高sendObject方法将其发送到Web服务器。
效。
3.4 Web 服务器处理 POST 请求并调用数据持久层保存 参考文献Student 对象 〔1〕李刚.疯狂Android讲义〔M〕.北京:电子工业出版社,2011年7月, (1)Web服务器采用Servlet的POST方法接收Android客户端发 643-644.送的数据并将接收的请求信息通过Google Gson API眏射为Stu-dent对象,代码如下: · · ·上接第223页··· 网络技术将发挥越来越大的作用, 来越多, 节省 从而提高办事效率,门) 的信息流。
比如, 院系办公室给老师和学生发布通知就属于上下 使高校行政管理系统能够实现资源共享、 行政成本。
为 高效率办公,级之间的信息流, 教务处给学生处传递信息就属于横向信息流。
传 高校核心竞争力的提升提供技术保证。
统的手工办事方式效率比较低, 因此必须使用网络技术中的工作流 参考文献技术, 使全校的信息能够快速流动起来, 从而提高办事效率。
工作流 〔1〕黄兆龙.现代学校管理学新论〔M〕.北京:中国经济出版社,2007.技术通过以浏览器的图形化为基准的工作流定义, 工作过程中的工 〔2〕王波,桑军.办公自动化系统设计〔M〕.北京:人民邮电出版社,2007.作流监管、 工作流设计、 支持多个工作流实例的协助工作等功能, 加 〔3〕李娟,张宝昌.网络信息技术在高校的应用〔J〕.中国现代教育装备,速信息处理的速度, 为处理过程提供技术支持。
2009(15):26-27. P (P ( 5 ) 基于P K I 保证系统的信息安全管理。
K I u b l i c K e y 〔4〕王正育.计算机网络技术课程教学的优化〔J〕.电脑知识与技术, 是一种遵循既定标准的密钥管理平台,Infrastructure) 它能够为所 2011,7(11):8270-8271.有网络提供加密和数字签名等密码服务及所必需的密钥和证书管 〔5〕王璐.基于工作流管理的高校行政管理自动化研究〔J〕.山西高等理体系, P 也就是说, K I 是利用公钥理论和技术建立的提供安全服 学校社会科学学报,2012,24(1):86-87. P务的基础设施。
K I 技术是信息安全技术的核心, 其核心是引入第 〔6〕马佳男.试论网络技术对高校行政管理的影响〔D〕.北京:中央民族三方认证机构CA 向用户提供安全的认证服务。
是证书的签发机 CA 大学,2008.关, 通过CA签发的.