今天来学习OkHttp的最后一个拦截器,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/28861acec2394fe1c30673c7adbe833b.png)
看一下它的javadoc说明:
![](https://i-blog.csdnimg.cn/blog_migrate/8e8b021da9c3840be970b123bdde5f43.png)
其作用有两个:发起网络请求和接收服务器响应,下面具体来看一下它的intercept():
![](https://i-blog.csdnimg.cn/blog_migrate/c9c8eac7f253482733050015ac4fe70d.png)
下面具体来看一下:
![](https://i-blog.csdnimg.cn/blog_migrate/8ac0977fb83fb3261022035bf310e3d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4fab380d9ac0379cd59f1ec7cdf6fb67.png)
![](https://i-blog.csdnimg.cn/blog_migrate/181b5d5af1711113bdc7f55523d1a4df.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6136be5cf3aca0ba2ff3c55ec88b04c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b93377101cfb7a81538405a8e2743612.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d086bdf63d750b2a106f6b5659ee26a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/162c1d59943c3990c8cf34874273f3a8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/05d15d2f949a02e339f28bca855fc0ab.png)
![](https://i-blog.csdnimg.cn/blog_migrate/558b54d8e41a6bb8506f93127e4718c7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/69c1a8f40b638e829a0296733bce6359.png)
接着就是读取响应信息了:
![](https://i-blog.csdnimg.cn/blog_migrate/e130874aec9d00cea869b053e3a2abd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ebebbc20d4bd2b0c1ec2e63e8198bf3e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4b3cbfbbbc20acf414f242f7a37ea759.png)
![](https://i-blog.csdnimg.cn/blog_migrate/75ce09713933b7e2923b3b436b28976b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ca27d9ef7831fa9a76756f9760ba8e70.png)
下面来总结一下Okhttp中一次网络请求的大致过程:
1、Call对象对请求的封装。
2、dispatcher对请求的分发。
3、getReponseWithInterceptors()方法。
而此时回顾一下拦截器:
- RetryAndFollowUpInterceptor:主要是负责重试和重定向请求。
- CacheInterceptor:处理缓存。
- BridgeInterceptor:负责请求和响应对象与实际请求和响应之间的转换,在转换过程中还可以处理一些cookie相关的内容。
- ConnectInterceptor:建立连接和流对象。
- CallServerInterceptor:完成最终的网络请求的。