OkHttp
OkHttp是一个HTTP请求引擎,负责任何底层网络操作,缓存,请求和响应操作等。
出现背景
在okhttp出现以前,android上发起网络请求要么使用系统自带的HttpClient
、HttpURLConnection
、要么使用google开源的Volley
、要么使用第三方开源的AsyncHttpClient
, 随着互联网的发展,APP的业务发展也越来越复杂,APP的网络请求数量急剧增加,但是上述的网络请求框架均存在难以性能和并发数量的限制
OkHttp
流行得益于它的良好的架构设计,强大的拦截器(intercepts)
使得操纵网络十分方便;OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求,其源码详见OkHttp Github。
也得益于强大的生态,大量的流行库都以OkHttp
作为底层网络框架或提供支持,比如Retrofit
、Glide
、Fresco
、Moshi
、Picasso
等。
当OKhttp面世之后,瞬间成为各个公司的开发者的新宠,常年霸占github star榜单,okhttp可以说是为高效而生,迎合了互联网高速发展的需要。
特点
同时支持HTTP1.1与支持HTTP2.0;
同时支持同步与异步请求;
同时具备HTTP与WebSocket功能;
拥有自动维护的socket连接池,减少握手次数;
拥有队列线程池,轻松写并发;
拥有Interceptors(拦截器),轻松处理请求与响应额外需求(例:请求失败重试、响应内容重定向等等);
Retrofit
Retrofit就是基于OkHttp的网络请求框架的封装。使请求接口和数据解析更加简洁明了。
Retrofit是在OkHttp之上构建的高级REST抽象。