热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

探索OkHttp系列(七)自定义拦截器

前言在前面的文章中,我们介绍完了所有OkHttp自带的拦截器,再回顾一下整个拦截器责任链图:在整个拦截器责任链中,用户还可以添加自定义的拦截器,有两个位置可以添加,对应的方法分别是

前言

在前面的文章中,我们介绍完了所有OkHttp自带的拦截器,再回顾一下整个拦截器责任链图:

image-20211218225726990

在整个拦截器责任链中,用户还可以添加自定义的拦截器,有两个位置可以添加,对应的方法分别是:



  • OkHttpClient.Builder::addInterceptor方法

fun addInterceptor(interceptor: Interceptor) = apply {
interceptors += interceptor
}


  • OkHttpClient.Builder::addNetworkInterceptor方法

fun addNetworkInterceptor(interceptor: Interceptor) = apply {
networkInterceptors += interceptor
}

addInterceptor

这个位置添加的拦截器会最早进行拦截处理,它拿到的Request是还没有经过OkHttp加工的Request,它拿到的Response是服务器返回后经过OkHttp层层加工的Response。我们可以在这个位置做一些操作,例如在Request上添加Header,对ResponseHeader进行保存之类的,我之前就使用了这个拦截器,在处理Request的时候,添加上COOKIE相关的Header,然后在处理返回的Response的时候,就对响应的COOKIE相关的Header进行本地保存,实现了用户的自动登录功能。


addNetworkInterceptor

这个位置添加的拦截器比较靠后,它拿到的Request是要向服务器发起I/O操作之前的Request,它拿到的Response是对服务器发起I/O操作之后得到的Response。该位置的自定义拦截器一般会做网络调试使用,日常开发使用的比较少。


结尾

至此,我们的OkHttp探索之旅结束了!



推荐阅读
  • 本文通过对OkHttp源码的详细解读,旨在帮助读者理解其核心执行流程,特别是同步与异步请求的处理方式。文中不仅涵盖了基本的使用示例,还深入探讨了OkHttp的核心功能——拦截器链的工作原理。 ... [详细]
  • 优化 Kotlin 中的 Android Retrofit 和 RxJava 使用
    本文介绍如何在 Kotlin 语言中进一步优化 Android Retrofit 和 RxJava 的使用,通过动态代理简化线程管理,并提供更简洁的代码实现。 ... [详细]
  • RangerApi之User管理在大数据平台之权限管理组件-AapcheRanger一文中我们了解了Ranger以及安装部署过程以及Admin可视化界面的使用。除了可以在可视化的R ... [详细]
  • 主目录见:Android高级进阶知识(这是总目录索引) 这是我们第一篇讲解网络请求相关的框架,前面我们的所有讲解都是跟网络请求没有关系,如果大家对Http协议的原理等还不熟悉,希望 ... [详细]
  • 开发笔记:深度探索!Android之OkHttp网络架构源码解析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了深度探索!Android之OkHttp网络架构源码解析相关的知识,希望对你有一定的参考价值。 ... [详细]
  • TCP总结篇
    计网分层结构考虑最简单的情况:两台主机之间的通信。这个时候只需要一条网线把两者连起来,规定好彼此的硬件接口,如都用USB、电压10v、频率2.4GHz等,这一层就是物理层,这些规定 ... [详细]
  • Day17_16_SpringCloud教程之Feign高级功能详解
    Feign高级功能详解注意:本篇Feign的高级功能实现请参考上一篇博客.Feign的高级功能实现以上一篇博客代码为基础,我们主要修改service_feign_consume ... [详细]
  • 历史指对人类社会过来的事件和流动,以及对这些事件行为有零碎的记录、钻研和诠释。历史是文化的传承,积攒和扩大,是人类文明的轨迹。APISpace的历史上的 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • gitlab重置password
    ruby没怎么学,自己搭建的gitlab的rootpassword又忘了。幸好看见此帖子,试验okhttp:roland.kierkels.netgitreset-your-git ... [详细]
  • Android程序员面试宝典自定义控件一分钟实现贴纸功能一分钟实现TextView高亮一分钟实现新手引导页一分钟实现ViewPager卡片一分钟实现加载对话框一分钟实现轮播图一分钟 ... [详细]
  • 注意:以下分析都是基于Retrofit2转载请注明出处:http:blog.csdn.netevan_manarticledetails51320637本节是《Retrofit的使 ... [详细]
  • 目前正在做毕业设计,一个关于校园服务的app,我会抽取已完成的相关代码写到文章里。一是为了造福这个曾经帮助过我的社区,二是写文章的同时更能巩固相关知识的记忆。一、前言在爬取教务系统 ... [详细]
  • 对okhttp网络请求的简单介绍publicclassAppextendsApplication{OkHttpClient实例是唯一的,所有的请求都会通过 ... [详细]
author-avatar
PHP界的一股清流
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有