OkHttp源码解析

一、OkHttp使用简介

1.创建一个OkHttpClient对象

2.创建一个request对象,通过内部类Builder调用生成Request对象

3.创建一个Call对象,调用execute(同步)/enqueue(异步)

 

同步:

 开源框架-OkHttp

 

 

异步:

 开源框架-OkHttp

 

 

二、OkHttp源码分析

 开源框架-OkHttp

 开源框架-OkHttp

可见Interceptor(拦截器)是 OkHttp 最核心的一个东西,不要误以为它只负责拦截请求进行一些额外的处理(例如 cookie),实际上它把实际的网络请求、缓存、透明压缩等功能都统一了起来,每一个功能都只是一个Interceptor,它们再连接成一个Interceptor.Chain,环环相扣,最终圆满完成一次网络请求。

 开源框架-OkHttp

总结:

·OkHttpClient实现Call.Factory,负责为Request创建Call;

·RealCall为具体的Call实现,其enqueue()异步接口通过Dispatcher利用ExecutorService实现,而最终进行网络请求时和同步execute()接口一致,都是通过getResponseWithInterceptorChain()函数实现;

·getResponseWithInterceptorChain()中利用Interceptor链条,分层实现缓存、透明压缩、网络 IO 等功能;

相关文章: