本篇介绍OkHttp的拦截器的使用。
首先我们需要了解什么事拦截器。打个比方,镖局押着一箱元宝在行走在一个山间小路上,突然从山上下来一群山贼拦住了镖局的去路,将镖局身上值钱的东西搜刮干净后将其放行。其中山贼相当于拦截器,镖局相当于一个正在执行任务的网络请求,请求中的参数就是镖局携带的元宝。拦截器可以将网络请求携带的参数进行修改验证,然后放行。这里面其实设计了AOP编程的思想(面向切面编程)。
1、拦截器可以一次性对所有的请求和返回值进行修改。
2、拦截器可以一次性对请求的参数和返回的结果进行编码,比如统一设置为UTF-8.
3、拦截器可以对所有的请求做统一的日志记录,不需要在每个请求开始或者结束的位置都添加一个日志操作。
4、其他需要对请求和返回进行统一处理的需求....
一、Application Interceptor是在请求执行刚开始,还没有执行OkHttp的核心代码前进行拦截,Application拦截器的作用:
1、不需要担心是否影响OKHttp的请求策略和请求速度。
2、即使是从缓存中取数据,也会执行Application拦截器。
3、允许重试,即Chain.proceed()可以执行多次。(当然请不要盲目执行多次,需要加入你的逻辑判断)
二、Network Interception是在连接网络之前(如图,看图一目了然)
1、可以修改OkHttp框架自动添加的一些属性(当然最好不要修改)。
2、可以观察最终完整的请求参数(也就是最终服务器接收到的请求数据和熟悉)
可以看到,从App Interceptor开始,然后执行Network Interceptor,最后又回到App Interceptor.
2、拦截不符合规则的URL。
3、对请求或者返回参数设置统一的编码方式
4、其它...。
比如对URL进行验证(如果Url中没有包含androidxx关键字,则修改请求链接为 http://www.androidxx.cn ),代码如下:
首先我们需要了解什么事拦截器。打个比方,镖局押着一箱元宝在行走在一个山间小路上,突然从山上下来一群山贼拦住了镖局的去路,将镖局身上值钱的东西搜刮干净后将其放行。其中山贼相当于拦截器,镖局相当于一个正在执行任务的网络请求,请求中的参数就是镖局携带的元宝。拦截器可以将网络请求携带的参数进行修改验证,然后放行。这里面其实设计了AOP编程的思想(面向切面编程)。
- 拦截器的作用和好处。
1、拦截器可以一次性对所有的请求和返回值进行修改。
2、拦截器可以一次性对请求的参数和返回的结果进行编码,比如统一设置为UTF-8.
3、拦截器可以对所有的请求做统一的日志记录,不需要在每个请求开始或者结束的位置都添加一个日志操作。
4、其他需要对请求和返回进行统一处理的需求....
- OkHttp中拦截器分类
一、Application Interceptor是在请求执行刚开始,还没有执行OkHttp的核心代码前进行拦截,Application拦截器的作用:
1、不需要担心是否影响OKHttp的请求策略和请求速度。
2、即使是从缓存中取数据,也会执行Application拦截器。
3、允许重试,即Chain.proceed()可以执行多次。(当然请不要盲目执行多次,需要加入你的逻辑判断)
二、Network Interception是在连接网络之前(如图,看图一目了然)
1、可以修改OkHttp框架自动添加的一些属性(当然最好不要修改)。
2、可以观察最终完整的请求参数(也就是最终服务器接收到的请求数据和熟悉)
- 实例化一个拦截器
- 配置拦截器
- 示例代码
可以看到,从App Interceptor开始,然后执行Network Interceptor,最后又回到App Interceptor.
- 建议
- 实际开发中的用途
2、拦截不符合规则的URL。
3、对请求或者返回参数设置统一的编码方式
4、其它...。
比如对URL进行验证(如果Url中没有包含androidxx关键字,则修改请求链接为 http://www.androidxx.cn ),代码如下:
- 注意