首页 > 范文大全 > 正文

基于HttpClient的Android远程数据库访问

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于HttpClient的Android远程数据库访问范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】虽然Android有SQLite的支持,但由于手机的硬件条件限制,很多数据库并没有直接运行在客户端上,因此对远程数据库的访问也是Android的必要技术。本文主要运用HttpClient组件,完成对远程数据库的访问,实现Android客户端对远程服务器数据的调用及修改。

【关键词】Android;HttpClient;MySQL;JSP

1.引言

虽然Android本身具有SQLite的支持,但SQLite数据只能进行简单的CRUD操作,数据类型也不能太复杂和数据容量不能太大。[1]而访问远程数据库的方法多种多样,主要分为直接和间接两种。直接访问采用JDBC连接技术,但其安全性较低,间接方法主要通过客户端向服务器发送请求,进而采用数据传输的方式进行数据库访问。

当下比较流行的数据传输方式主要有XML和JSON两种方式,由于HTTP协议是从WWW服务器传输超文本到本地浏览器的传送协议,使浏览器更加高效,[2]而HttpClient是支持HTTP协议的客户端编程工具包,因此HttpClient组件为实现远程数据库的连接提供了更为便捷有效的方式。

2.HttpClient简介

HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包。它提供的主要的功能包括:实现了所有HTTP的方法(GET,POST,PUT,HEAD等)、支持自动转向、支持HTTPS协议、支持服务器等。[3]

3.HttpClient在Android中的应用

3.1 工作原理

(1)客户端通过URL向服务器发送请求,建立连接;

(2)服务器接收客户端请求,并将响应信息返回客户端;

(3)客户端与服务器断开连接。[4]

3.2 服务器端的开发

服务器端采用JSP技术,通过利用JavaBean使用JDBC完成数据库连接,同时,使用Servlet实现数据传输功能。

3.3 手机客户端的开发

Android集成了org.apache.http.client.HttpClient,可以直接实现简单的htttp Get和Post操作。操作实现步骤如下:

(1)创建HttpClient客户端对象;

(2)生成响应的请求信息;

(3)使用execute方法发送HTTP GET(HTTP POST)请求,并返回HttpResponse对象,通过利用getStatusCode获取返回码以判断请求是否发送成功(若返回码为200,则成功);

(4)解析返回信息。

关键代码如下:

public class ApacheHttpClient{

public String httpGet(String url) {

String response = null;

HttpClient httpclient = new DefaultHttpClient();

HttpGet httpGet = new HttpGet(url);

HttpResponse httpResponse;

try{

httpResponse = httpclient.execute(httpGet);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if(statusCode==HttpStatus.SC_OK){

response = EntityUtils.toString(httpResponse.getEntity());

}

else{

response = “返回码:”+statusCode;

}

} catch (Exception e){}

return response;

}

public String httpPost(String url,List params) throws Exception{

String response = null;

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(url);

try{

httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));

HttpResponse httpResponse = httpclient.execute(httppost);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if(statusCode==HttpStatus.SC_OK){

response = EntityUtils.toString (httpResponse.getEntity());

}

else {

response = “返回码:”+statusCode;

}

}catch (Exception e){}

return response;

}

}

4.结束语

本文在利用JavaBean工具类对数据库进行操作的基础上,通过使用Servlet进行数据的输入输出,并结合HttpClient组件传送Http数据,顺利实现了Android与远程数据库的间接访问,同时也在一定程度上加强了对数据库的安全性保护。未来HttpClient组件技术还将在Android手机平台中越来越广泛地得以应用。

参考文献

[1]李洋,殷云鹏,赵勇.基于Android的网络数据存储与访问[J].中国科技信息,2013(08):92-92.

[2]林汝泽,徐媛媛,方凯等.基于HTTP协议的Android手机数据同步实现[J].信息通信,2013(01):96-96.

[3]徐婉珍.httpclient组件及其在android开发中的应用探讨[J].数字技术与应用,2013(01).

[4]Janronehoo.android学习——HttpClient操作模拟http操作[EB/OL].http:///janronehoo/article/details/6939052,2011,11.

基金项目:广西大学“大学生创新创业训练计划”项目(项目编号:1301080)。

作者简介:

田佳影(1992—),女,重庆人,大学本科,现就读于广西大学计算机与电子信息学院,研究方向:电子商务。

周怡成(1991—),男,广西藤县人,大学本科,现就读于广西大学计算机与电子信息学院,研究方向:电子商务。

王宇航(1991—),男,湖北十堰人,大学本科,现就读于广西大学计算机与电子信息学院,研究方向:电子商务。

归伟夏(1974—),女,广西南宁人,硕士,副教授,研究方向:并行计算、协同计算。