HttpClient
Apache开源库,拥有大量API提供高度灵活性,实现稳定,主要用于 SDK 2.1、2.2 版本,替代存在逻辑缺陷的 HttpURLConnection
。
在 SDK 6.0 中被移除,要使用时需要添加以下脚本到 build.gradle :
android {
useLibrary 'org.apache.http.legacy'
}
HttpURLConnection
Android SDK 内置的底层网络访问库,比 Apache 的库更轻量易用,SDK 2.3 开始推荐使用该库取代 HttpClient
。
大部分网络访问框架均属于该库的上层封装版本。
OkHttp
Square 公司出品的高性能底层网络访问库,支持同步、异步,而且实现了 spdy、http2、websocket 协议,封装了线程池、数据转换、参数使用、错误处理等,API 简洁易用,和 Volley
一样实现了 HTTP 协议的缓存。
典型的上层封装框架有:Retrofit、Volley、picasso
Volley
Google 推出的网络通信库,简单易用,扩展性强,适用于数据量小而频繁的网络API异步访问,同时支持网络图片加载。
底层请求库支持在 HttpUrlConnection, HttpClient, OkHttp
中任意切换。
Volley提供的功能
- JSON,图像等的异步下载(
NetworkImageView、ImageLoader
) - 网络请求的排序(scheduling)
- 网络请求的优先级处理
- LRU缓存
- 多级别取消请求
- 和Activity和生命周期的联动(Activity 结束时同时取消所有网络请求)
不适用场景
- 大型文件下载(应考虑使用
Download Manager
) - 文件上传(可考虑使用
OkHttp
) - 流媒体
Retrofit
Square 公司出品的 RESTful 异步网络访问库,底层使用 Okhttp
进行封装,可灵活扩展,原生支持与 RxJava
配合使用。
可通过注解配置请求参数,各种转换器、适配器、反序列化工具可自由定义使用,学习成本比 Volley
稍高。
对请求响应的 REST规范 执行比较严格。
android-async-http
底层基于 Apache 的 HttpClient
的上层封装框架,随着 HttpClient
的失宠而逐渐失去市场。目前不再维护。