OkHttp 网络框架源码解析

2019-03-12  本文已影响0人  jovelin

简单用法

1.创建 OkHttpClient 对象
核心客户端类
通过静态内部类 Builder() 设置相关参数

2.创建 Request 对象
构建请求参数,传入请求报文信息 url、method、header

3.创建 Call 对象
即具体请求实例,将 Request 封装成 Call 对象
newCall 传入 request 对象创建

4.调用 Call 的 execute/enqeue 方法发送请求
同步需要注意:发送请求后,就会进入阻塞状态,直到收到响应

流程图解

image.png

OkHttpClient

Builder 构建方式,链式调用

dispatcher 分发基类,分发器接收到同步、异步请求队列,分发同步、异步请求

ConnectionPool 连接池,相同请求复用,支持并发

image.png

Dispatcher

分发同步/异步任务
维护任务队列
runningAsyncCalls (正在执行的任务,包括执行在取消的)
readyAsyncCalls (等待就绪的任务)
runningSyncCalls

同步/异步

同步请求就是执行请求的操作是阻塞式,直到 HTTP 响应返回
异步请求就类似于非阻塞式的请求,它的执行结果一般都是通过接口回调的方式告知调用者

拦截器

官网:拦截器是 OkHttp 中提供一种强大机制,它可以实现网络监听、请求以及响应重写、请求失败重试等功能

image.png image.png

ApplicationInterceptor 系统拦截器
ConnectInterceptor 网络拦截器

image.png image.png

ConnectionPool

链接复用,多路复用

上一篇下一篇

猜你喜欢

热点阅读