美文网首页
从HttpClient到HttpUrlConnection

从HttpClient到HttpUrlConnection

作者: Cabird | 来源:发表于2018-08-07 17:08 被阅读0次

官方说明

简要总结

  1. HTTP Client拥有庞大而灵活地APIs,实现很稳定,正因为此,我们很难在不破坏兼容性的前提下对其进行优化,Android团队也没有积极开发HTTP Client;
  2. HttpURLConnection是一个适用于大多数应用程序的通用轻量级HTTP客户端。这个类起初体量不大,但其专注的API使我们能够轻松提升其稳定性。
  3. 在Froyo(2.2)之前的版本中,HttpURLConnection有许多令人崩溃的错误。尤其是在一个可读的InputStream中调用close()会堵死连接池。通过禁用连接池解决此问题:
private void disableConnectionReuseIfNecessary() {
  // HTTP connection reuse which was buggy pre-froyo
  if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {
      System.setProperty("http.keepAlive", "false");
}
  1. 在Gingerbread(2.3)中,我们添加了transparent response compression(透明响应压缩)。 HttpURLConnection将自动将此标头添加到传出请求,并处理相应的响应:
    Accept-Encoding: gzip
    我们还在Gingerbread中对HTTPS进行了一些改进。 HttpsURLConnection尝试连接服务器名称指示(SNI),允许多个HTTPS主机共享IP地址。它还支持压缩和session tickets。如果连接失败,则会在没有这些功能的情况下自动重试。这使得连接到最新服务器时HttpsURLConnection有效,而不会破坏与旧服务器的兼容性。
  2. 在Ice Cream Sandwich(4.0)中,HttpsURLConnection增加了响应缓存。

Which client is best?

  1. Apache HTTP客户端在Eclair和Froyo上有更少的错误。 它是这些版本的最佳选择。
  2. 对于Gingerbread和之后的版本,HttpURLConnection是最好的选择。 它的简单的API和小尺寸使它非常适合Android。 透明压缩和响应缓存减少网络使用,提高速度和节省电池。 新的应用程序应该使用HttpURLConnection; 值得我们继续投入精力。

相关文章

网友评论

      本文标题:从HttpClient到HttpUrlConnection

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