外观
OkHttp 中的 Interceptor 有哪几种类型?它们的执行顺序是怎样的?
标准回答
用户可添加两类拦截器:应用拦截器和网络拦截器。常见请求链为:应用拦截器 → 重试/重定向 → Bridge → Cache → Connect → 网络拦截器 → CallServer;响应沿相反方向返回。
**次数和缓存区别:**应用拦截器围绕整体调用,能观察缓存命中;网络拦截器只在实际网络交换时执行,纯缓存命中会跳过,重定向可能引发多次执行。具体内部类以所用 OkHttp 版本为准。
通俗例子
应用层可统一添加业务信息;重定向可能产生多次网络交换,网络拦截器可能执行多次。调用 proceed 才把请求交给下一站。
深入解释
**拦截器在哪里工作:**应用拦截器围绕一次业务调用观察请求;网络拦截器围绕实际网络交换工作。缓存命中、重定向或重试会让它们观察到的次数和数据不同。
**为什么顺序重要:**请求沿拦截器链向下传递,响应再返回。某拦截器提前返回缓存响应,下面的步骤可能不再执行;调用 proceed 的位置决定后续链何时继续。
内容来源
- Android · AI Agent 知识手册 · 原条目
6.1.1