安卓上最强大的HTTP库是什么?

19

我正在寻找一个能够处理HTTP POST、multipart等请求的库。在安卓上,是否有一种事实标准库可以使这些请求更容易?


2
我最近发现了这个异步HTTP库http://loopj.com/android-async-http/,但还没有尝试过。它旨在使异步HTTP处理更加容易。 - rineez
非常好的异步请求库,唯一的问题是我无法访问我的HTTP请求响应的响应头。 - Zapnologica
1
不要使用Loopj Async Http Client,它非常糟糕,线程会死掉而你甚至都不知道,线程池非常差。ION要好得多,使用这个 https://github.com/koush/ion/。 - AZ_
1
OKHttp看起来尽可能简单:https://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(); - serv-inc
7个回答

8
请查看DroidFu,特别是DroidFu的HTTP组件。它们是Apache Commons HTTP的一个相对简单的包装器,但它们非常适合大多数需求。它包括一些便利功能,如可选的HTTP和模型缓存,甚至像GZip这样的“为什么不内置到平台中”的东西。(顺带一提:android.net.AndroidHttPClient是旧版DefaultHttpClient库的一个很好的升级,当你需要更多控制时可以使用它,但它只支持Android 2.2+且文档相对较少)。
如果你只需要最小的麻烦来处理multipart,你可以尝试android_multipart_post,虽然我从未尝试过。
编辑:
现在DroidFu已经停止维护。现在如果我要开始一个新项目,我几乎肯定会使用Volley,如果需要更多控制则使用OKHttp(如果你想同时使用两者,则可以将OKHttp作为Volley的传输层)。

不清楚如何在DroidFu中设置HTTP POST参数,例如名称/值对。 - hunterp
使用 BetterHttpRequestpost 方法构建请求;向其传递一个 URL 和一个 HTTP 实体(对于简单的名称/值对,只需传递由 BasicNameValuePair 列表组成的 UrlEncodedFormEntity)。 - Yoni Samlan
2
根据这篇博客文章,Android已停止支持他们的Apache HttpClient。如果有一个库可以同时包装两者,并根据操作系统版本代码选择使用哪一个,那将是很好的。 - yincrash
在 Volley 和 Retrofit 之间,你会选择哪一个?谢谢。 - Thiago
我自己还没有使用过Retrofit,但我的印象是它们做了不同的事情。如果你想要一个可以直接使用的库,它可以为你完成更多的工作,集成JSON解析,支持RxJava习语,并且不介意一些额外的依赖,那么请使用Retrofit。Volley则更接近于底层。 - Yoni Samlan
1
这个答案中的大多数链接都显示404错误。您能否更新这些链接? - Adil Malik

7

1
非常好用和基础的库,使用简单。如果需要的话还有一些更高级的特性,比如gzip、缓存、HTTP代理等。 - Zapnologica
非常好的库,比android-async-http更容易使用。但同样出色。 - Loolooii

7

我最喜欢的是Ion(完整版,正在积极开发中),这是基于AndroidAsync构建的(如果您不需要Ion功能,则可以单独使用AndroidAsync)两者都是由Koushik Dutta创建的。

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

6
请查看http://loopj.com/android-async-http/
简介中说:这是一个基于Apache的HttpClient库构建的Android异步回调式Http客户端。所有请求都在应用程序的主UI线程之外进行,但任何回调逻辑都将使用Android的Handler消息传递在创建回调的同一线程上执行。
这个库被流行的应用程序如Instagram、Pinterest、Heyzap等使用。

3

如果你想要使用保持活动连接和gzip,又不想遇到随机超时错误,那么你不能简单地使用一个库。

在Android SDK 9以下版本中,你需要使用apache库。在Android SDK 9-13版本中,apache库存在问题(随机超时),你需要使用HttpUrlConnection。

不幸的是,在我的ICS测试中,HttpUrlConnection非常有缺陷,你现在需要使用Apache库。

官方谷歌帖子: http://android-developers.blogspot.com/2011/09/androids-http-clients.html

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


0

-4

我说“健壮”,我正在寻找一个库,它建立在这些标准API调用的基础上,使得发布更容易。这个问题已经被解决了很多次。 - hunterp
啊,我不知道它们那么难。如果你找到了什么,请告诉我。 - Femi
类似于http://lukencode.com/2010/04/27/calling-web-services-in-android-using-httpclient/,但更健壮。 - hunterp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接