首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android's HTTP Clients -Android的http客户端联接方式

2013-10-28 
Androids HTTP Clients -Android的http客户端连接方式【前言】开发android的手机客户端,通常都要通过模拟htt

Android's HTTP Clients -Android的http客户端连接方式

【前言】开发android的手机客户端,通常都要通过模拟http请求与服务器端通信,android给我们提供了两种方式的http client客户端接口,一种是采用Apache HTTP Client,一种是采用HttpURLConnect,那么到底选择哪种方式好呢?来自google android  Dalvik team团队的Tim Bray工程师在android官方blog上的一篇文章告诉了我们答案,下面是我的翻译: 

  大多数的android app的网络连接都会使用http方式发送和接收数据,android包含了两个http客户端类库:HttpURLConnection 和Apache HTTP Client。两个都支持https,文件流上传和下载,配置超时,ipv6和连接池技术。

Apache HTTP Client

  DefaultHttpClient 以及它的兄弟类AndroidHttpClient都是适合于Web浏览器的可扩展的HTTP客户端。他们有大量灵活的api,他们的实现稳定而且很少有bug。但是,其巨大的API数量导致我们很难在不破坏兼容性的条件下来改善它,android团队对于Apache HTTP Client改善工作并不是很积极.

HttpURLConnection

  HttpURLConnection是一个通用的,轻量级的http客户端,适合大多数的应用,这个类开始比较粗糙,但是对于我们来说其一些关键的api上提高稳定性是简单的。在Froyo(2.2)以前,HttpURLConnection有一些令人沮丧的bug。特别是在一个可读的InputStream上调用close()方法可能会破坏连接池,可通过不使用连接池技术来避免这种情况。

private void enableHttpResponseCache() {    try {        long httpCacheSize = 10 * 1024 * 1024; // 10 MiB        File httpCacheDir = new File(getCacheDir(), "http");        Class.forName("android.net.http.HttpResponseCache")            .getMethod("install", File.class, long.class)            .invoke(null, httpCacheDir, httpCacheSize);    } catch (Exception httpResponseCacheNotAvailable) {    }}
当然,你也应该配置你的Web服务器,在其Http响应中设置cache头字段。

哪一个更好呢?

  Apache HTTP client在Eclair(2.1)和Froyo(2.2)上bug很少,在这些版本上使用是最好的选择。
在Gingerbread(2.3)系统及以后,HttpURLConnection将是最佳选择。其API简单而且小巧,非常适合于Android。透明压缩及响应缓存机制减少了网络流量,提升网络速度,节省电池电量。 新的应用将应该使用HttpURLConnection, 它是我们Android团队致力于前进的方向!

译自:http://android-developers.blogspot.com/2011/09/androids-http-clients.html

热点排行