OkHttp的请求网络流程
2018-05-02 18:23:58 20 举报
OkHttp的请求网络流程
作者其他创作
大纲/内容
同步
ConnectInterceptor负责与服务器建立连接
异步
RequestBody formBodyRequest reqOkHttpClient client
使用拦截器interceptors
同步/异步请求
dispatcher.enqueue()
得到OkHttpClient对象
将请求加入异步队列并使用线程池处理
OkHttp的请求网络流程
CallServerInterceptor向服务器发起请求
请求网络
call.enqueue()
call.execute(),可返回Response对象
检查缓存是否可用
RetryAndFollowUpInterceptor请求的重试和重定向
使用当前缓存的数据并更新缓存,关闭连接
不进行网络请求且缓存可以使用,则直接返回缓存
得到响应对象Response
不进行网络请求且缓存不存在或过期,返回504错误
将请求加入同步队列
RouteException和IOException会重试连接
否则
OkHttpClient.Builder.build()
得到Requet对象
回调onResponse
可使用默认创建的线程池或自定义线程池
通过client.newCall(req)得到realCall
Dispatcher任务调度,控制并发请求
BridgeInterceptor在请求阶段对请求头添加一些字段,响应阶段执行gzip解压
dispatcher.executed()
客户端处理
自定义的networkInterceptors
自定义拦截器
Request.Builder.build()
CacheInterceptor在请求时判断是否有缓存是否要重新请求,响应时缓存resp对象
直接返回Response对象
使用网络请求返回的数据
0 条评论
回复 删除
下一页