【问题标题】:AndroidHttpClient and DefaultHttpClientAndroidHttpClient 和 DefaultHttpClient
【发布时间】:2011-07-05 09:19:50
【问题描述】:

这两者之间有很大区别吗?最好使用哪一个?

【问题讨论】:

    标签: java android


    【解决方案1】:

    基于Android源码:

    https://github.com/CyanogenMod/android_frameworks_base/blob/gingerbread/core/java/android/net/http/AndroidHttpClient.java#L106

    AndroidHttpClient 设置为进行以下额外设置:

    1. 关闭过时检查,因为连接可能一直中断。
    2. 设置 ConnectionTimeout 和 SoTimeout(20 或 60 秒)
    3. 关闭重定向。
    4. 为 SSL 套接字使用会话缓存。
    5. 如果可能,请在客户端和服务器之间使用 gzip 压缩流量。
    6. 默认情况下不保留 cookie。

    【讨论】:

      【解决方案2】:

      AndroidHttpClient:Apache DefaultHttpClient 的子类,为 Android 配置了合理的默认设置和注册方案,还允许用户添加 HttpRequestInterceptor 类。 此客户端处理 cookie,但默认情况下不保留它们。要保留 cookie,只需将 cookie 存储添加到 HttpContext

      [API]

      【讨论】:

      • 公平地说,这并不完全正确.. 如果您仔细查看文档,它不是子类.. 我相信 AndroidHttpClient 内部使用 DefaultHttpClient 作为委托,但不公开任何它的公共方法(除了接口中的那些)..
      • AndroidHttpClient 内部使用DefaultHttpClient
      • 这就是文档所说的,但它仍然让不经意的观察者失去了有关“合理的默认设置”的更多细节。
      • 它不是一个子类,看起来不是很聪明,因为你不能轻易地编写在多个平台上工作的代码。
      【解决方案3】:

      来自 android 开发人员的这个有趣的 blog post 概述了不同的 Android 的 HTTP 客户端。

      根据这篇文章, URLConnection 应该优先于 Gingerbread 及更高版本上的 DefaultHttpClient 或 AndroidHttpClient。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-12
        • 1970-01-01
        • 2016-03-27
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 2012-06-21
        相关资源
        最近更新 更多