HttpClient与HttpURLConnection的比较

  HttpClient:由于HttpClient的API数量过多,使得我们很难在不破坏兼容性的情况下对它进行升级和扩展。
  HttpURLConnection:它是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。由于HttpURLConnection的API比较简单,因此可以更加容易地去使用和扩展它。
注意:在Android 2.2版本之前,HttpURLConnection一直存在着一些bug。比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效了。那么我们通常的解决办法就是直接禁用掉连接池的功能:

private void disableConnectionReuseIfNecessary() {  
    // 处理Android SDK 2.2版本之前的bug  
    if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {  
          //过滤掉
    }  
}

  如何在Android 4.0及以后的版本中去启用响应缓存的功能,同时还不会影响到之前的版本的做法:

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) {  
    }  
} 

  在Android 2.2版本之前,选择HttpClient更好,因为bug较少。但Android 2.3版本及以后,HttpURLConnection则是最佳的选择。它的压缩和缓存机制可以有效地减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。

参考资料:http://blog.csdn.net/hguang_zjh/article/details/33743249

推荐阅读更多精彩内容