【问题标题】:What is the most robust HTTP library for android? [closed]什么是最强大的 Android HTTP 库? [关闭]
【发布时间】:2011-06-01 19:09:47
【问题描述】:

我正在寻找一个处理 HTTP POST、multipart 等的库。是否有一个事实上的标准库来使这些请求在 android 上更容易?

【问题讨论】:

  • 我最近遇到过这个异步HTTP库loopj.com/android-async-http还没试过。它旨在简化异步 HTTP 处理。
  • 非常好的异步请求库,我唯一遇到的问题是我无法访问我的 http 请求响应的响应头。
  • 不要使用 Loopj Async Http Client,它真的很烂,线程死了你甚至都不知道,非常糟糕的线程池。 ION 更好用这个github.com/koush/ion
  • OKHttp 看起来尽可能简单:square.github.io/okhttp:OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); return response.body().string();

标签: android http


【解决方案1】:

看看DroidFu,尤其是DroidFu HTTP components。它们是 Apache Commons HTTP 内容的一个相当薄的包装器,但它们非常适合大多数需求。它包括一些细节,比如可选的 HTTP 和模型缓存,甚至是“为什么不将它内置到平台”之类的东西,比如 GZip。 (顺便说一句:android.net.AndroidHttPClient 是对旧版 DefaultHttpClient 的一个很好的升级,当您需要下拉以获得更多控制权时,它只是 Android 2.2+,而且文档不足)。

如果您只需要最少麻烦的多部分,您可以尝试android_multipart_post,尽管我从未尝试过。

编辑:

DroidFu 现已停产。这些天来,如果我开始一个新项目,我几乎肯定会使用Volley,如果我需要更多控制权,我会使用OKHttp(如果你想同时使用 OKHttp 作为 volley 的传输层)。

【讨论】:

  • 不清楚如何设置http post参数,例如droidfu中的名称/值对
  • 使用BetterHttpRequestpost方法构造请求;向它传递一个 URL 和一个 HTTP 实体(对于简单的名称/值对,您可以传递一个由 BasicNameValuePairs 列表组成的 UrlEncodedFormEntity
  • 根据this blog post,Android 已停止支持他们的 Apache HttpClient。最好有一个包含两者的库,并根据操作系统版本代码选择要使用的库。
  • 在 Volley 和 Retrofit 之间,你会选择哪一个?谢谢
  • 这个答案中的大多数链接都给出了 404 错误。你能更新链接吗?
【解决方案2】:

使用 Kevin Sawicki 的 http-request。 http://kevinsawicki.github.com/http-request/

【讨论】:

  • 非常好的和基本的,简单易用的库。如果需要,还具有一些更高级的功能。如gzip、缓存、http代理等
  • 非常不错的库,比 android-async-http 好用得多。但一样好。
【解决方案3】:

我最喜欢的是 Ion(已完成,正在积极开发中)。它建立在AndroidAsync 之上(如果您不需要 Ion 功能,可以单独使用),两者都由Koushik Dutta 提供。

  • 异步下载
  • 专为 Android 设计的易于使用的 Fluent API
  • HTTP POST/PUT
  • HTTP 功能和优化的透明使用
  • 查看收到的标头
  • 请求的分组和取消
  • 下载进度回调
  • 支持 file:/、http(s):/ 和 content:/ URI
  • 请求级别的日志记录和分析
  • 支持像 Charles Proxy 这样的代理服务器进行请求分析
  • 基于 NIO 和 AndroidAsync
  • 能够使用自签名 SSL 证书

【讨论】:

    【解决方案4】:

    看看http://loopj.com/android-async-http/

    Overview 说:一个基于异步回调的 Android Http 客户端,构建在 Apache 的 HttpClient 库之上。所有请求都在您应用的主 UI 线程之外发出,但任何回调逻辑都将在使用 Android 的 Handler 消息传递创建回调的同一线程上执行。

    这个库被 Instagram、Pinterest、Heyzap 等流行应用程序使用。

    【讨论】:

      【解决方案5】:

      如果您想使用 keep alives 和 gzip 并且不想遇到随机超时错误,不幸的是您不能只使用一个库。

      在低于 9 的 Android SDK 版本上,您需要使用 apache 库。在 Android SDK 版本 9-13 上,apache 库存在问题(随机超时),您需要使用 HttpUrlConnection。

      不幸的是,在我对 ICS HttpUrlConnection 的测试中确实存在错误,您现在需要使用 Apache 库。

      关于该主题的官方 Google 帖子: http://android-developers.blogspot.com/2011/09/androids-http-clients.html

      我在 ICS 上发现的问题: What android Http Client to use for Ice Cream Sandwich?

      【讨论】:

        【解决方案6】:

        我一直在做一些事情。它使用创建 POJO 的处理程序和加载程序扩展了 loopj 库。 https://github.com/MarkoMilos/android-http

        【讨论】:

          【解决方案7】:

          是的。它被称为 httpclient,它在 Android 上的 javadoc 根是http://developer.android.com/reference/org/apache/http/package-summary.html。它几乎可以使用 http 完成所有您想要的操作,包括 POST 和 multipart。

          【讨论】:

          • 我说“健壮”我正在寻找一个基于这些标准 API 调用的库,以使发布更容易。这个轮子已经解决了很多次了。
          • 啊,我不知道他们这么难。如果你发现了什么,请告诉我。
          • 类似这样的东西:lukencode.com/2010/04/27/… 但更健壮。
          猜你喜欢
          • 2015-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-21
          • 2017-03-15
          • 2010-09-12
          • 2010-09-15
          • 2011-04-07
          相关资源
          最近更新 更多