如何在Android开发中用HttpClient连接网络数据

如何在Android开发中用HttpClient连接网络数据,第1张

HttpClient网络访问

一、HttpClient网络访问:

(一)、简介:

1、Apache组织提供了HttpClient项目,可以实现网络访问。在Android中,成功集成了HttpClient,所以在Android中可以直接使用HttpClient访问网络。

2、与HttpURLConnection相比,HttpClient将前者中的输入、输出流操作,统一封装成HttpGet、HttpPost、HttpRequest类。

HttpClient:网络连接对象;

HttpGet:代表发送GET请求;

HttpPost:代表发送POST请求;

HttpResponse:代表处理服务器响应的对象。

HttpEntity对象:该对象中包含了服务器所有的返回内容。

3、使用步骤:(六部曲)重点

创建HttpClient对象:通过实例化DefaultHttpClient获得;

创建HttpGet或HttpPost对象:通过实例化 HttpGet或HttpPost 获得,而构造方法的参数是urlstring(即需要访问的网络url地址)。也可以通过调用setParams()方法来添加请求参数;

调用HttpClient对象的execute()方法,参数是刚才创建的 HttpGet或HttpPost对象 ,返回值是HttpResponse对象;

通过response对象中的getStatusLine()方法和getStatusCode()方法获取服务器响应状态是否是200。

调用 HttpResponse对象的getEntity()方法,返回HttpEntity对象。而该对象中包含了服务器所有的返回内容。

借助EntityUtils的toString()方法或toByteArray()对 HttpEntity对象进行处理,也可以通过IO流对 HttpEntity对象进行操作。

(二)、封装HttpClientHelper工具类:

public class HttpClientHelper {

public static HttpClient checkNetwork(String url) {

HttpClient httpClient = new DefaultHttpClient();

HttpGet request = new HttpGet(url);

HttpResponse httpResponse = null;

try {

httpResponse = httpClientexecute(request);

if (httpResponsegetStatusLine()getStatusCode() == 200) {

return httpClient;

}

} catch (ClientProtocolException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

return null;

}

/

作用:实现网络访问文件,将获取到数据储存在文件流中

@param url

:访问网络的url地址

@return inputstream

/

public static InputStream loadFileFromURL(String url) {

HttpClient httpClient = new DefaultHttpClient();

HttpGet requestGet = new HttpGet(url);

HttpResponse httpResponse;

try {

httpResponse = httpClientexecute(requestGet);

if (httpResponsegetStatusLine()getStatusCode() == 200) {

HttpEntity entity = httpResponsegetEntity();

return entitygetContent();

}

} catch (Exception e) {

eprintStackTrace();

}

return null;

}

/

作用:实现网络访问文件,将获取到的数据存在字节数组中

@param url

:访问网络的url地址

@return byte[]

/

public static byte[] loadByteFromURL(String url) {

HttpClient httpClient = new DefaultHttpClient();

HttpGet requestGet = new HttpGet(url);

try {

HttpResponse httpResponse = httpClientexecute(requestGet);

if (httpResponsegetStatusLine()getStatusCode() == 200) {

HttpEntity httpEntity = httpResponsegetEntity();

return EntityUtilstoByteArray(httpEntity);

}

} catch (Exception e) {

eprintStackTrace();

Systemoutprintln("====>" + etoString());

}

return null;

}

/

作用:实现网络访问文件,返回字符串

@param url

:访问网络的url地址

@return String

/

public static String loadTextFromURL(String url) {

HttpClient httpClient = new DefaultHttpClient();

HttpGet requestGet = new HttpGet(url);

try {

HttpResponse httpResponse = httpClientexecute(requestGet);

if (httpResponsegetStatusLine()getStatusCode() == 200) {

HttpEntity httpEntity = httpResponsegetEntity();

return EntityUtilstoString(httpEntity, "utf-8");

}

} catch (Exception e) {

eprintStackTrace();

}

return null;

}

/

作用:实现网络访问文件,先给服务器通过“GET”方式提交数据,再返回相应的数据

@param url

:访问网络的url地址

@param params

String url:访问url时,需要传递给服务器的参数。

第二个参数格式为:username=wangxiangjun&password=123456

@return byte[]

/

public static byte[] doGetSubmit(String url, String params) {

HttpClient httpClient = new DefaultHttpClient();

HttpGet requestGet = new HttpGet(url + "" + params);

try {

HttpResponse httpResponse = httpClientexecute(requestGet);

if (httpResponsegetStatusLine()getStatusCode() == 200) {

HttpEntity httpEntity = httpResponsegetEntity();

return EntityUtilstoByteArray(httpEntity);

}

} catch (Exception e) {

eprintStackTrace();

}

return null;

}

/

作用:实现网络访问文件,先给服务器通过“POST”方式提交数据,再返回相应的数据

@param url

:访问网络的url地址

@param params

String url:访问url时,需要传递给服务器的参数。 第二个参数为:List<NameValuePair>

@return byte[]

/

public static byte[] doPostSubmit(String url, List<NameValuePair> params) {

HttpClient httpClient = new DefaultHttpClient();

HttpPost requestPost = new HttpPost(url);

try {

requestPostsetEntity(new UrlEncodedFormEntity(params, "utf-8"));

HttpResponse httpResponse = httpClientexecute(requestPost);

if (httpResponsegetStatusLine()getStatusCode() == 200) {

HttpEntity httpEntity = httpResponsegetEntity();

return EntityUtilstoByteArray(httpEntity);

}

} catch (Exception e) {

eprintStackTrace();

}

return null;

}

/

作用:实现网络访问文件,先给服务器通过“POST”方式提交数据,再返回相应的数据

@param url

:访问网络的url地址

@param params

String url:访问url时,需要传递给服务器的参数。 Map<String , Object>

@return byte[]

/

public static byte[] doPostSubmit(String url, Map<String, Object> params) {

HttpClient httpClient = new DefaultHttpClient();

HttpPost requestPost = new HttpPost(url);

List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();

try {

if (params != null) {

for (MapEntry<String, Object> entry : paramsentrySet()) {

String key = entrygetKey();

String value = entrygetValue()toString();

BasicNameValuePair nameValuePair = new BasicNameValuePair(

key, value);

parametersadd(nameValuePair);

}

}

requestPost

setEntity(new UrlEncodedFormEntity(parameters, "utf-8"));

HttpResponse httpResponse = httpClientexecute(requestPost);

if (httpResponsegetStatusLine()getStatusCode() == 200) {

HttpEntity httpEntity = httpResponsegetEntity();

return EntityUtilstoByteArray(httpEntity);

}

} catch (Exception e) {

eprintStackTrace();

}

return null;

}

}

1安装手机本地php+mysql服务器环境篇 :

11安装ksweb软件,安装好ksweb后,会在手机上生成一个文件夹htdocs,其目录是mnt/sdcard/htdocs,htdocs是网站的根目录。

12安装mysql 直接点击mysql管理,点击选择“是”然后解压便可自动安装。mysql的账号密码随后再改(在设置里面更改)。

13安装好MySQL之后,(如下图,打开phpmyadmin,表示安装成功!),另外,我们需要对ksweb进行一些设置方可更好使用。

131端口的更改步骤:(启用root→更改80端口)手机服务器启用root方法如下图,在ksweb设置里面把root打钩。

132开启手机80端口方法:把8080端口改为80端口,并把PHP服务,MySQL都打勾。其他一些设置比如MySQL密码,开机自启动等选项大家根据需要自行修改即可!

14ksweb全部设置好后,我们打开手机本地服务器地址localhost:80,表示设置好了。

我们点击页面中的“Enter KSWEB Web Interface”可以看到手机服务器的一些配置信息(默认账号密码都是“admin”)。表示手机服务搭建成功,一切正常!

2利用nat123软件进行内网80端口映射篇:

21注册账号,我们先到其官网注册账号官网,大家百度nat123即可,至于怎么注册我就不说了。

22登陆并添加域名解析,

221 应用名称,我填的是网络电视直播—在线看电视。假如你要搭建自己的博客,你可以填XX的博客,或者XX的个人博客等。

222 内网端口,只有root的手机才填80端口,所以这也是为什么一开始我说手机需要root!

223 内网地址这个默认localhost就行。

224 外网域名,我这里使用的是自己的域名(当使用自己的域名时,用cname解析,下面有当前唯一cname地址,我们在自己的域名解析里面填这个就行)。如果我们没有自己的域名,我们可以用官方免费的二级域名,注意他的格式)一切填好之后,点击确认保存即可!

23 我们下载并安装登陆安卓版的nat123,就自动解析了,

34 接下来我们在另一台电脑上输入刚才的域名访问 如下图所示,表示安卓手机web服务器安装成功,网站搭建成功!

首先你得知道 192168 是什么地址,这些地方在路由器上默认是被隔离的,就是不会有数据包穿过路由器到外网去。如果你是想测试程序,应该用 Wi-Fi 在局域网测试它。

当你手机用 GPRS 时是从移动运营商的网络到达你的测试服务器,因为 192168 是被隔离的,所以在互联网上是找不到 192168 这个地址的。

测试时应该使用 Wi-Fi 连接局域网测试。GPRS 和 3G 是没有办法使用的。

  转载 本文介绍如何在安卓手机上搭建http服务器,有时候我们会有这要的需求,那就是想在自己的安卓手机上搭建一个简单的http服务里,有人是想用来玩一玩,有人是想做点研究,还有人有其他的目的,那么我们该怎么在安卓上搭建一个http服务器呢,下面安卓后院 为大家收集整理的一个方法,希望能够帮到大家。

  

  一、准备篇

  

  1将lmptarbz2移动到SD卡根目录(/mnt/sdcard/)

  

  2安装安卓终端模拟器(TerminalEmulatorapk)

  

  (注:lmptarbz2文件可以在本站的安卓工具箱页面下下载)

  

  二、安装篇

  

  1打开安卓终端模拟器

  

  2执行以下命令(root)

  

  $ su

  

  # cd /

  

  # mount -o remount,rw /system

  

  # tar xf /mnt/sdcard/lmptarbz2

  

  # mount -o remount,ro /system

  

  # exit

  

  $ exit

  

  三、启动篇

  

  1打开安卓终端模拟器

  

  2执行以下命令(root)

  

  $ su

  

  # almp-startsh

  

  # exit

  

  $ exit

  

  三、关闭篇

  

  1打开安卓终端模拟器

  

  2执行以下命令(root)

  

  $ su

  

  # almp-stopsh

  

  # exit

  

  $ exit

  

  四、测试篇

  

  1打开网络浏览器(OperaMobile)

  

  2输入以下地址欣赏下您的almp环境吧

  

  http://127001/

  

  http://127001/fileadmin/

  

  或者

  

  http://localhost/

  

  http://localhost/fileadmin/

  

  部分浏览器不支持localhost的解析

  

  五、mysql篇

  

  1mysql用户名为root

  

  2mysql默认密码为空

  

  3mysql用以下地址访问

  

  127001:3306

  

  localhost:3306

  

  4推荐phpmyadmin管理您的mysql数据库

  

  5由于phpmyadmin更新频繁,请自己下载安装

  

  6phpmyadmin默认不支持空密码登陆,请自己修改phpmyadmin的配置文件

  

  7登陆phpmyadmin轻击修改密码为您的mysql超级用户root设置一个密码吧

  

  六、注意篇

  

  php-cgi由本人编译

  

  1手机需要有root权限

  

  2部分rom需要安装busybox

  

  3部分rom需要在命令前面加上busybox

  

  4本环境包中的部分资源来源于网络开源项目

  

  5用Re挂载/system分区为读写可跳过mount命令

  

  6执行终端命令时请忽略命令前的命令提示符$(#)

  

  7本环境包理论上应该工作在Arm5++的安卓手机上

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在Android开发中用HttpClient连接网络数据

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情