okHttp重点内容:
okHttpClien
RealCall
request
dispatcher线程池分发执行线程,任务池
connectionPool池连接池,socket连接池
streamAllocation
Interceptor
Interceptor Chain
RealIntercepter Chain中Interceptor List顺序:
oKHttpClient 的Interceptor:联网前的中断器
retryAndFollowupInterceptor:重试机制 ;创建StreamAllocation对象,为后面流程的执行准备条件;处理重定向的HTTP响应;错误恢复。
bridgeInterceptor:加入一些头信息
cacheInterceptor:缓存策略
connectInterceptor:执行连接
OKHttpClient 的 networkInterceptors:联网后用户可自定义的中断器
callServerInterceptor:向服务器发送数据,和从服务器读取数据
okHttp中比较精髓的地方:
1、使用装配器即InterceptorChain,在链式反应中加入自己定义的Interceptor使得在request和response阶段做自己的工作
2、platform:代码实现可以与平台无关,platform的实现类来实现与平台相关的一些代码,比如log
为什么使用deque?
基本使用
同步调用
Response response = mOkHttpClient.newCall(request).execute();
异步调用
mOkHttpClient.newCall(request).enqueue(responseCallback)
详细参考http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html介绍。