1.为什么我们要使用OkHttp?OkHttp有什么优点?
说OkHttp之前我们先说另外两个网络请求库——HttpUrlConnection和HttpClient。在没有OkHttp之前的日子里,他们才是Android用来完成网络请求的类库。那么这两者都有什么优缺点呢? 为什么不再继续使用下去呢?
HttpClient是Apache基金会的一个开源网络库, 功能十分强大, API数量众多, 但是正是由于庞大的API数量使得我们很难在不破坏兼容性的情况下对它进行升级和扩展, 所以Android团队在提升和优化HttpClient方面的工作态度并不积极。
HttpURLConnection是一种多用途, 轻量极的HTTP客户端, 提供的API比较简单, 可以容易地去使用和扩展. 不过在Android 2.2版本之前,HttpURLConnection一直存在着一些令人厌烦的bug. 比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效了。
因此, 一般的推荐是在2.2之前, 使用HttpClient, 因为其bug较少. 在2.2之后, 推荐使用HttpURLConnection, 因为API简单, 体积小, 并且有压缩和缓存机制, 但是在4.4以后Android团队已经把网络请求库更换为OkHttp了。
那么到底OkHttp相比于HttpUrlConnection和HttpClient好在哪里呢?先上个权威、专业的百度百科的介绍。
OkHttp的优点:
1.支持Http/1.1 Http/2 网络协议
2.支持GZIP, 可以压缩下载体积
3.响应缓存可以直接避免重复请求
4.高效、灵活;通过连接池