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

来源:互联网 发布:网络视频课程快进方法 编辑:程序博客网 时间:2024/05/21 19:37

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件,转载须注明出处: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开发相关文章

0 0
原创粉丝点击