简简单单的OkHttp源码分析
OkHttp介绍
OkHttp是目前Android使用最频繁的网络请求框架(目前的Volley, Retrofit底层都是使用的OkHttp), 框架由Square公司开源, 在Android4.4之后HttpUrlConnection也默认使用OkHttp的实现
在OkHttp4之后改为kotlin实现
- 优势所在
而同步请求对于请求次数不超过64次, 同主机不超过的5次的请求直接加入到runningAsyncCalls队列当中, 如果不符合条件则加入到readAsyncCalls中
默认的五个拦截器的职责
重试与重定向拦截器
在发生一次请求超时的情况下, 去寻找可用的ip重新请求服务器.
某次请求返回了30x时, 并且在响应报文头的Location字段中有重定向的url, 则根据这个url重新构建一个Request
- 重试
- 重定向
桥接拦截器
为request补充请求头等信息
提供cookie, 如果用户需要cookie会在这里进行处理
缓存拦截器
请求前查询是否有可用缓存, 如果缓存有效, 则直接返回缓存
连接拦截器
与服务器完成TCP连接
请求服务拦截器
与服务器通信;封装请求数据与解析响应
对于已经取消的请求结果不再返回客户端
如果在通过重试与重定向拦截器之后取消了任务, 取消是否无效
仍然会去请求, 但是用户不会接收到响应
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment