Android中,HttpURLConnection与Apache的DefaultHttpClient哪个更被推荐使用?

在Android中,请求网络资源的方式包含了:HttpURLConnection和Apache的DefaultHttpClient。那么,这两个方式哪个更被推荐使用呢?Android官方文档为我们推荐HttpURLConnection,而理由是什么呢?

在Android 4.0,为HttpURLConnection增加了一个response cache(响应缓存),这是一个很好的减少http请求次数的机制,Android官方推荐使用HttpURLConnection而不是Apache的DefaultHttpClient的原因就是使用HttpURLConnection不仅有针对android做http请求的优化,而且还在4.0上增加了Reponse Cache,这进一步提高了效率。

我们来看看官方的一个例子:使用反射机制开启HTTP response cache。

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) {
    Log.d(TAG, "HTTP response cache is unavailable.");
  }
}


上面例子,能够在Android 4.0以上的设备上开启response cache,并且不会影响到之前的程序。在cache被开启之后,所有cache中的HTTP请求都可以直接在本地存储中进行响应,当Android需要请求同样的资源时,通过cache,就不需要开启一个新的网络连接去获取资源了,而且被cache起来的response可以被server所确保没有过期,这样可以有效地减少带宽;而没有被cached的response会因方便下次请求而被存储在response cache中。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。