二、桥接拦截器
BridgeInterceptor
,连接应用程序和服务器的桥梁,我们发出的请求将会经过它的处理才能发给服务器,比如设置请求内容长度,编码,gzip压缩,cookie等,获取响应后保存Cookie等操作。这个拦截器相对比较简单,功能总结起来就是:补全请求与响应后处理。
补全请求头:
请求头 | 说明 |
---|---|
Content-Type | 请求体类型,如:application/x-www-form-urlencoded 、multipart/form-data |
Content-Length /Transfer-Encoding | 请求体的解析方式 |
Host | 请求的主机站点 |
Connection: Keep-Alive | 保持长连接,如果不设置这个请求头,默认保持。即在有效期内保持tcp连接,连接复用。 |
Accept-Encoding: gzip | 接受响应使用gzip压缩,常见的有compress, gzip |
Cookie | cookie身份辨别 |
User-Agent | 请求的用户信息,如:操作系统、浏览器等 |
在补全了请求头后交给下一个拦截器处理,得到响应后,主要干两件事情:
1、保存cookie。读取Set-Cookie响应头并调用接口告知用户,在下次请求则会读取对应的数据设置进入请求头,默认的CookieJar
无实现;
2、如果使用gzip返回的数据(即响应头Content-Encoding为gzip),则使用GzipSource
包装便于解析。
总结
桥接拦截器的执行逻辑主要就是以下几点:
- 对用户构建的
Request
进行添加或者删除相关头部信息,以转化成能够真正进行网络请求的Request
- 将符合网络请求规范的Request交给下一个拦截器处理,并获取
Response
- 如果响应体经过了GZIP压缩,那就需要解压,再构建成用户可用的
Response
并返回