目录
(3)Android Async HTTP Android异步HTTP库
(4)Volley (并发)Google推出的Android异步网络请求框架和图片加载框架
是Apache基金会的一个开源网络库, 功能十分强大, API数量众多, 但是正是由于庞大的API数量使得我们很难在不破坏兼容性的情况下对它进行升级和扩展, 所以Android团队在提升和优化HttpClient方面的工作态度并不积极.
在Android 6.0 后,google就取消了对Apache HTTP的支持, 以后,相继出现了HttpUrlConnect 、okhttp .
(2)HttpURLConnection
是一种多用途, 轻量极的HTTP客户端, 提供的API比较简单, 可以容易地去使用和扩展. 不过在Android 2.2版本之前, HttpURLConnection 一直存在着一些令人厌烦的bug. 比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效了。那么我们通常的解决办法就是直接禁用掉连接池的功能:
因此, 一般的推荐是在2.2之前, 使用 HttpClient , 因为其bug较少. 在2.2之后, 推荐使用 HttpURLConnection , 因为API简单, 体积小, 并且有压缩和缓存机制, 并且Android团队后续会继续优化 HttpURLConnection ,
但是4.4版本 HttpURLConnection已被替换成OkHttp了
(3)Android Async HTTP Android异步HTTP库
AndroidAsync 异步Socket,HTTP(客户端+服务器),WebSocket,和socket.io库。基于NIO而不是线程。
官方文档描述此库的特点:
(1)使用4.3.6以上版本的HttpClient来代替Android提供的DefaultHttpClient
(2)兼容Android API 23及以上
(3)发送异步HTTP请求,处理匿名回调中的响应
(4)非UI线程执行HTTP请求
(5)使用线程池来限制并发资源的使用
(6)使用RequestParams作为GET/POST参数构造器
(7)多部分文件上传不需要其它第三方库
(8)JSON数据流的上传不需要额外的库
(9)能处理循环和相对重定向
(10)应用程序开销很小,总共只有90kb
(11)为移动连接自动智能请求重试优化
(12)支持超快的请求自动gzip响应解码
(13)BinaryHttpResponseHandler支持二进制通信协议
(14)使用JsonHttpResponseHandler将内置响应解析为JSON
(15)使用FileAsyncHttpResponseHandler将响应直接保存到文件中
(16)持久cookie存储,将cookie保存到SharedPreferences中
(17)使用BaseJsonHttpResponseHandler与Jackson JSON、GSON、或其他JSON序列化库集成
(18)使用SaxAsyncHttpResponseHandler支持SAX解析器
(19)支持语言和内容编码,而不仅仅是UTF-8
Android-Async-Http是一个强大的网络请求库,这个库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法处理请求结果
但是:
对于Android-Async-Http库来说,不推荐使用,原因有两点:
1、作者已停止维护
2、Android5.0后弃用HttpClient,Android-Async-Http是基于HttpClient库之上的网络请求处理库
(4)Volley (并发)Google推出的Android异步网络请求框架和图片加载框架
2013年Google I/O大会上推出了一个新的网络通信框架——Volley。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕
(5)OkHttp
这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)
OkHttp默认是一个高效的HTTP客户端:
1. HTTP/2 支持所有针对同一主机的请求共享套接字
2. 在HTTP/2 不能使用的时候,使用连接池,减少了请求的延时
3. 使用GZIP压缩,减少了下载的大小
4. 响应缓存可以避免重复请求网络
OkHttp会能够在网络出现一些常见的链接问题的时候进行默默地恢复。如果你的服务有多个IP地址的话,它会在第一次连接失败的时候,尝试其他备用地址。这样的话对于托管在多个数据中心或者使用IPV4+IPV6方式的服务来说是很有用的。
使用OkHttp的方式很简单,它的request/response API被设计为流畅而且稳定的Builder(建造者模式),相当稳定。它支持同步阻塞调用,同时也支持异步调用(使用回调函数)。
OkHttp支持Android 2.3及以上版本使用。对于Java应用来说,需要1.7版本。
解释:HTTP/ 2是超文本传输协议(HTTP)的最新版本,一种新的协议。它用于传输数据,这将大大加快网络速度,并可以帮助优化搜索引擎
(6)Retrofit 类型安全的Http客户端
Retrofit是Square公司开发的一款针对Android网络请求的框架,现在已经更新到2.3版本了。Retrofit的最大特点是使用运行时注解的方式提供功能
Retrofit其实我们可以理解为OkHttp的加强版,它也是一个网络加载框架。底层是使用OKHttp封装的。准确来说,网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责网络请求接口的封装,并且还支持很多的开源库(著名例子:Retrofit + RxJava)
超级解耦, API接口定义和API接口使用总是相互影响,什么传参、回调等,耦合在一块。有时候我们会考虑一下怎么封装我们的代码让这两个东西不那么耦合,这个就是Retrofit的解耦目标
https://blog.csdn.net/qq_17250009/article/details/51108414
(7) Android--OKGO使用
该库是封装了okhttp的标准RESTful风格的网络框架,可以与RxJava完美结合,比Retrofit更简单易用。支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持Https和自签名证书,支持超时自动重连,支持cookie与session的自动管理,支持四种缓存模式缓存网络数据,支持301、302重定向,扩展了统一的上传管理和下载管理功能