OKHttp4 全面解析(二)——拦截器(二)——BridgeInterceptor

该博客介绍了OkHttp拦截器的功能,主要负责将用户请求转换为符合HTTP规范的网络请求,并将接收到的网络响应解码/解压缩为用户响应。拦截器会添加必要的头信息,如Cookies,Content-Type,并根据条件处理响应的解压缩。这一过程确保了网络通信的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

该拦截器的作用:

  • 将用户请求转化为网络请求
  • 将网络响应转化为用户响应

用户请求:用户创建的请求
网络请求:真正发送的请求

用户响应:经过解码/解压缩的网络响应
网络响应:真正接收到的响应

更具体点的就是,这个拦截器会帮你添加Cookies,解码/解压缩收到的响应

2.用户请求转化为网络请求

听着挺唬人的,其实就是为了防止用户请求的一些头信息不符合HTTP 规范,而做的一个检查机制。会从用户请求中新建一个请求。在新的请求上,将不符合的去掉,将没有的添加进来。

以下针对网络请求:

  • 如果用户请求的Body设置了contentType,则会添加Content-Type头信息
  • 如果用户请求的Body设置了contentLength,则会添加Content-Length头信息,并且移除Transfer-Encoding头信息,否则,移除Content-Length头信息,添加Transfer-Encoding设置为分块传输
  • 如果用户请求没有Host头信息,则添加Host头信息
  • 如果用户请求没有Connection头信息,则添加Connection头信息为Keep-Alive
  • 如果用户请求没有Accept-Encoding并且没有Range头信息,则添加Accept-Encoding头信息为gzip
  • 如果用户请求没有User-Agent头信息,则添加User-Agent头信息为okhttp/okhttp的版本
  • 如果有Cookies,则把Cookies信息带上

3. 将网络响应转化为用户响应

其实就是将网络响应解码/解压缩后返回。
满足下面的所有条件,OkHttp才会将响应解压缩:

  1. 我们在发送请求时声明了Accept-Encodinggzip
  2. 响应的body数据采用了gzip压缩

满足以上条件后,该拦截器会将网络响应解压缩,变为用户响应后返回给上一个拦截器:RetryAndFollowUpInterceptor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值