Moosphan / Android-Daily-Interview

:pushpin:每工作日更新一道 Android 面试题,小聚成河,大聚成江,共勉之~

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

2019-11-21:谈谈网络请求中的拦截器(Interceptor)?

MoJieBlog opened this issue · comments

2019-11-21:谈谈网络请求中的拦截器(Interceptor)?

以okhttp为例,可以谈谈它内部拦截器的工作原理和应用场景

在OkHttp中 它内部拦截器采用了责任链的模式 如重试拦截器(请求重试)=>请求头拦截器(修改请求头信息)等 在我们View的事件传递机制中也用了责任链的模式 只能讲个泛泛 等待大佬补充

commented

系统自带的拦截器:
1,重试和重定向
2,请求头+响应头处理
3,缓存
4,dns + 三次握手
5,CallServer,读写数据流

常用的自定义拦截器:
1,日志拦截器
2,自定义缓存规则拦截器
3,重试机制等等

RetryAndFollowUpInterceptor:负责失败重试以及重定向。
BridgeInterceptor:负责把用户构造的请求转换为发送给服务器的请求,把服务器返回的响应转换为对用户友好的响应。
CacheInterceptor:负责读取缓存以及更新缓存。
ConnectInterceptor:负责与服务器建立连接。
CallServerInterceptor:负责从服务器读取响应的数据。

okhttp Interceptor拦截器实现请求和响应拦截 采用责任链模式 用于重试 重写拦截请求机制
可应用于请求日志拦截 重写请求头 重写参数 缓存等拦截处理