研究框架我们不但要学会怎么使用,而且还要知道它的底层工作原理,对原理的了解程度决定了你能解决问题的程度,当开发中遇到问题的时候我们才能快速的定位问题 ,快速的透过它的现象看到他的本质,关于源码解析我们只看核心逻辑,要避免深入代码细节无法自拔或长篇大论不知道所云的错误,本专栏的同步视频教程已经发布到csdn学院,地址如下:https://edu.csdn.net/course/detail/29076
我们知道请求被五个拦截器由上向下层层包装处理,然后再由下到上追层将相应结果处理返回,每个请求实体和响应实体的构建都是通过建造者设计模式去完成的,责任链负责流程的控制,而建造者负责对每个对象的控件,责任链在于把控整个全局,而建造者更加关注是每个对象的细节,这才是真个okhttp框架的灵魂所在,他们各自具体功能职责如下所示:
RetryAndFollowUpInterceptor:重试及重定向拦截器
BridgeInterceptor:桥接拦截器
CacheInterceptor:缓存拦截器
ConnectInterceptor:连接拦截器
CallServerInterceptor:读写拦截器
尽管每个拦截器的具体职责不一样,但是他们的处理套路都是一致的,首先对请求的Request进行处理,接着执行下一个拦截器,然后对Response进行处理,最后返回Response给上一个拦截器
@Override public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
//1.Request阶段
//2.把请求传递给下一个拦截器
response = ((RealInterceptorChain) chain).proceed(request, streamAllocation, null, null);
//3.Response阶段
//4.返回给上一级拦截器
return response;
}
}