美文网首页
HttpClient与HttpURLConnection的比较

HttpClient与HttpURLConnection的比较

作者: HEXG_ | 来源:发表于2017-11-15 22:32 被阅读0次

      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

    相关文章

      网友评论

          本文标题:HttpClient与HttpURLConnection的比较

          本文链接:https://www.haomeiwen.com/subject/tvpqvxtx.html