王明松 罗清隆 马昊

摘要:Android智能手机作为当今流行的移动互联网客户端,已广泛应用于各种生产生活领域内,对信息数据的快速传播与知识交流起了极大的促进作用。移动互联网的广泛普及与应用,带来了手机客户端与应用服务之间连接与传输数据的问题。该文提出了两种数据交换方式,提高了数据传输与应用效率。服务器采用Servlet接口处理,可以快速高效的进行数据处理。XML数据格式具备规范性和高识别效应,可以在小容量多种类的数据传输中使用。JSON数据格式由于具有文本特性,能够更好处理大容量数据传输。

关键词:Android通信;Android应用开发;Servlet通信

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2019)04-0054-02

1 手机客户端与应用服务器的请求响应过程

近年来,随着移动互联网在社会经济中的广泛应用,智能手机作为实用方便的客户端移动设备,已成为移动网络应用最重要的网络连接设备。Android作为智能手机的操作系统,被众多手机生产商所接受,同时基于它的应用软件几乎包涵了社会生活的各个领域,已成为当今影响力最强的操作系统之一。

在与Android客户端进行交互数据的应用服务器处理上,Java Servlet是运行在Web服务器或应用服务器上的程序,作为来自客户端请求和应用程序之间的连接层。使用 Servlet,可以收集来自网页表单和其他客户端的用户数据,呈现来自数据库或者其他源的记录,并可以向客户端返回执行后的数据。

在与Android客户端进行交互数据的应用服务器处理上,Java Servlet是运行在Web服务器或应用服务器上的程序,作为来自Web浏览器或其他HTTP客户端请求和HTTP服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单和其他客户端的用户数据,呈现来自数据库或者其他源的记录,并可以向客户端返回执行后的数据。Java Servlet具有以下优势:

(1)Servlet在Web服务器的地址空间内执行。不必再创建一个单独的进程来处理每个客户端请求,提高了应用服务的效率和执行速度。

(2)Servlet独立于平台操作,可以实现跨平台使用。

(3)Servlet是安全可信任的。服务器上的Java安全管理器执行了一系列限制,以保护服务器计算机上的资源。

(4)Java类库的全部功能对 Servlet 来说都是可用的。可以通过sockets和RMI机制与applets、数据库或其他软件进行交互。

Servlet执行过程一般包括:

(1)读取客户端(浏览器或手机)发送的显式的数据。

(2)读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等。

(3)处理数据并生成结果。这个过程可能需要访问数据库,执行RMI或CORBA调用,调用Web服务,或者直接计算得出对应的响应。

(4)发送显式的数据(即文档)到客户端(浏览器或手机)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。

(5)发送隐式的HTTP响应到客户端(浏览器或手机)。这包括指出浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

2 应用服务器响应XML格式数据的处理过程

手机客户端连接Web服务器,向Servlet服务发出请求数据,然后接收服务响应后的XML格式数据,并进行数据解析。主要代码如下:

(1)手机客户端向服务器发出数据,并接收返回的XML数据,进行处理。

//客户端向服务器发送请求

String urlString = 服务器地址+应用程序名 + "ClassInfoServlet?action=操作类型";

URL url = new URL(urlString);

//接收服务器处理后的XML数据

......

XMLReaderxr = 转换对象.getXMLReader();

XML文件处理类XML处理对象 = new XML文件处理类();

xr.setContentHandler(XML文件处理对象);

//获取数据并转换成XML文件

......

xr.parse(is);

Return classInfoListHander.获取数据方法();

其中XML文件处理类。其内容如下:

public class XML文件处理类 extends DefaultHandler {

//处理XML文件数据值

public void characters(char[] ch, int start, int length) throws SAXException {

//处理过程

}

//处理XML结束标签

public void endElement(String uri, String localName, String qName) throws SAXException {

//处理过程

}

//处理XML开始文档

public void startDocument() throws SAXException {

classInfoList = new ArrayList();

}

//处理XML结束标签

public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {

//处理过程

}

}

(2)Servlet服务接收客户端的请求,并进行数据处理。

void doPost( ) throws ServletException, IOException{

/*获取action参数,根据action的值执行不同的业务处理*/

String action = request.getParameter("action");

if(action.equals(请求类型)) {

/* 获取请求参数,并执行具体的业务处理操作 */

......

//向客户端返回XML数据

StringBuffer sb = new StringBuffer();

//建立返回数据的XML文档

sb.append(开始标签).append("\r\n")

.append(子项开始标签)

.append(子项数据)

.append(子项结束标签).append("\r\n")

.append(子项开始标签)

.append(子项数据)

.append(子项结束标签).append("\r\n")

......

sb.append(结束标签).append("\r\n");

PrintWriter out = response.getWriter();

out.print(sb.toString());

}

服务器的Servlet向Android客户端返回XML格式数据

3 应用服务器响应JSON格式数据的处理过程

手机客户端连接Web服务器,向Servlet服务发出请求数据,然后接收服务响应后的JSON格式数据,并进行数据解析,主要代码如下:

(1)手机客户端向服务器发生请求数据,并接收返回的JSON格式数据,进行处理:

String urlString = 服务器地址+应用程序名 + "ClassInfoServlet?action=操作类型";

urlString += "&参数属性=" + URLEncoder.encode(参数值, "UTF-8") + "";

urlString += "&参数属性=" + URLEncoder.encode(参数值, "UTF-8") + "";

//连接服务器并且发送请求数据

URL url = new URL(urlString);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");

conn.setConnectTimeout(5 * 1000);

conn.setDoOutput(true);

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

OutputStreamoutStream = conn.getOutputStream();

outStream.write(entitydata);

outStream.flush();

outStream.close();

//接收服务器的请求响应,并解析服务器传回的JSON数据

if (conn.getResponseCode() == 200) {

byte[] resultByte= readStream(conn.getInputStream());

String result = new String(resultByte, "UTF-8");

JSONArray array = new JSONArray(result);

int length = array.length();

for (int i = 0; i< length; i++) {

JSONObject object = array.getJSONObject(i);

//处理数据

}

}

4 结语

Android智能手机作为当今流行的移动互联网客户端,已广泛应用于各种生产生活领域内,对信息数据的快速传播与知识交流起了极大的促进作用。但是作为一种嵌入式设备,智能手机的处理速度和使用容量有限,当处理数据量大时,必将数据上传到企业服务器处理。因此在客户端与服务器之间的数据交互尤为重要,成为提高整体系统使用率的重要环节。本文提出了XML数据和JSON数据两种交换格式,适合不同的应用领域,使用数据在网络的传输更为便捷流畅。

参考文献:

[1] MEIERR.Android4高级编程[M].北京:清华大学出版社,2013.

[2] 陈法海,杨斌.Android系统中Wi-Fi网络的研究与实现[J].成都信息工程学院学报,2010,25(5).

[3] 陈益强.简析Android系统的安全性能[J].信息系统工程,2011(9).

[4] 李宁.Android开发权威指南[M].北京:人民邮电出版社,2013:10-11.

[5] 曾建平.Android系统架构及应用程序开发研究[J].微计算机信息,2011,27(9).

【通联编辑:代影】