码迷,mamicode.com
首页 > 移动开发 > 详细

【转】 Pro Android学习笔记(七三):HTTP服务(7):AndroidHttpClient

时间:2015-12-15 14:27:41      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/

不知道此文是否是这个系列中最短的一篇。我们注意到HttpClient的类来自Apache的org.apache.http.client.HttpClient,详细的教程可以查看http://hc.apache.org/httpcomponents-client-ga/tutorial/html/

Android2.2引入了HttpClient的继承类AndroidHttpClient,对HttpClient进行了一些缺省设置,方便开发者开发Android应用,如连接超时和socket超时都是设置为20秒,连接管理器设置为ThreadSafeClientConnManager。在绝大部分的情况下下,可以和HttpClient直接替换。但有一些地方需要注意。

创建AndroidHttpClient实例

使用静态函数newInstance()来创建AndroidHttpClient实例。从连接管理器设置为ThreadSafeClientConnManager,可以猜测AndroidHttpClient对象是提供给整个应用的,因此可以理解为何使用静态函数方式来创建。例子如下:

AndroidHttpClient httpClient = AndroidHttpClient.newInstance("my-http-agent-string");

所带的参数是http请求消息头User-Agent。例如上一次学习中我们通过抓包显示User-Agent消息头的内容是:

Dalvik/1.6.0 (Linux; u; Android 4.2.2; sdk Build/JB_MR1.1)

一旦我们创建了AndroidHttpClient实例,不能够改变里面的参数设置,也就是说AndroidHttpClient帮开发者设定好了这些参数,并且不允许改变。如果我们一定要改变,可以在HttpGet对象中进行设置。

execute()不能在UI线程中执行

不能在UI线性,即main thread中执行execute(),否则会异常,必须在后台进程中执行。

close()和压缩处理

当我们使用完后,应执行close(),以便释放内存。AndroidHttpClient提供一些静态方法处理压缩响应,包括modifyRequestToAcceptGzipResponse(HttpRequest request)、getCompressedEntity(byte[] data, ContentResolver resolver)、getUngzippedContent(HttpEntity entity)。

相关链接: 我的Android开发相关文章

【转】 Pro Android学习笔记(七三):HTTP服务(7):AndroidHttpClient

标签:

原文地址:http://www.cnblogs.com/blongfree/p/5048052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!