OkHttp 源码解析(Kotlin版)——BridgeInterceptor

448 阅读1分钟

源码有点多先看注释

image.png

从应用程序代码到网络代码的桥梁。首先,它构建一个来自用户的网络请求请求。然后它继续调用网络。最后,它从网络构建一个用户响应响应。

其实主要是构建http请求头和处理响应头,HTTP响应头和请求头信息对照表: tools.jb51.net/table/http_…

image.png 在执行proceed方法之前,都是在对请求头进行处理,包括Content-Type、Content-Length、Host、Connection、Accept-Encoding、Cookie、User-Agent。

image.png 针对response进行处理,如果transparentGzip = true,且压缩编码类型为gizp,且响应正常,则进行解压,移除 Content-Encoding、Content-Length、保留原Content-Type向下一个拦截器传递

这个拦截器主要的作用就是添加一些通用的请求头,例如 Content-Type、Content-Length,还有将我们在 OkHttp 中配置的 Cookie 信息都处理成请求头,再通过 Accept-Encoding 这个请求头告诉服务器我们支持接收 gzip 编码的数据流,如果服务器返回的数据流是经过 gzip 压缩的,在这个拦截器中还会对数据流进行解压,最后将这个数据流重新设置给 Response 的 body 中,以便我们能够正常解析这个数据流。

参考博客

www.jianshu.com/p/fab2d74de…

下一篇

juejin.cn/post/701993…