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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容