okhttp 的 拦截器

news2024/9/21 2:45:39

拦截器有很多作用,实现就是责任链模式,细节,等我有时间补上。

后面有时间更新一下。

OkHttp最核心的工作是在 getResponseWithInterceptorChain() 中进行,在进入这个方法分析之前,我们先来了 解什么是责任链模式,因为此方法就是利用的责任链模式完成一步步的请求。 

拦截器流程:
OkHttp中的 getResponseWithInterceptorChain() 中经历的流程:

请求会被交给责任链中的一个个拦截器。默认情况下有五大拦截器:

1. RetryAndFollowUpInterceptor 第一个接触到请求,最后接触到响应;重试拦截器在交出(交给下一个拦截器)之前,负责判断用户是否取消了请求;在获得了结果之后 ,会根据响应码判断是否需要重定向,如果满足条件那么就会重启执行所有拦截器。

2. BridgeInterceptor 桥接拦截器在交出之前,负责将HTTP协议必备的请求头加入其中(如:Host)并添加一些默认的 行为(如:GZIP压缩);在获得了结果后,调用保存cookie接口并解析GZIP数据。

3. CacheInterceptor 缓存拦截器顾名思义,交出之前读取并判断是否使用缓存;获得结果后判断是否缓存。

4. ConnectInterceptor 连接拦截器在交出之前,负责找到或者新建一个连接,并获得对应的socket流;在获得结果后 不进行额外的处理。

5. CallServerInterceptor 请求服务器拦截器进行真正的与服务器的通信,向服务器发送数据,解析读取的响应数据。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1431602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Python的深度学习的身份证识别考勤系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)

原文:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 附录 A:机器学习项目清单 此清单可以指导您完成机器学习项目。有八个主要步骤: 构建问题并全局看问题。 …

Java中Object类常用的12个方法

前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”。Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object 类中的 public 方法。 先看下 Object 的类结构: 1. getClass 方法 pub…

Git快速入门+常用指令+提交规范

目录 Git创建本地仓库 IDEA集成Git Git和IDEA连接使用2 忽略文件 本地仓库常用命令 远程仓库常用命令 分支常用命令 标签操作 提交规范 Git创建本地仓库 1、创建一个文件夹,右键选择Git Bash Here 2、选择下列其中一个方法 方法一:创建初始化…

图片怎么快速转换格式?一个方法让你轻松转换

图片格式转换是在图像处理中不可缺少的一部分,不同的用途需要不同的图片格式。在特定的情况下,需要将一种图片格式转换成另一种图片格式。那么, 我们要怎么快速转换图片格式呢?通过使用图片格式转换器,无需下载软件轻松…

开普勒先行者vs特斯拉擎天柱,谁更胜一筹?

原创 | 文 BFT机器人 近日,中国的开普勒探索机器人公司推出其新产品——开普勒通用型转轮系列人形机器人。这系列机器人多才多艺、功能强大,集智能化与科技感于一身。 本文将为您介绍开普勒的功能和规格等,并将其与主要竞争对手特斯拉擎天柱…

C++ 动态规划 线性DP 最长共同子序列

给定两个长度分别为 N 和 M 的字符串 A 和 B ,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M 。 第二行包含一个长度为 N 的字符串,表示字符串 A 。 第三行包含一个长度为 M 的字符串,表…

Matplotlib绘制炫酷散点图:从二维到三维,再到散点图矩阵的完整指南与实战【第58篇—python:Matplotlib绘制炫酷散点图】

文章目录 Matplotlib绘制炫酷散点图:二维、三维和散点图矩阵的参数说明与实战引言二维散点图三维散点图散点图矩阵二维散点图进阶:辅助线、注释和子图三维散点图进阶:动画效果和交互性散点图矩阵进阶:调整样式和添加密度图总结与展…

创建自己的Hexo博客

目录 一、Github新建仓库二、支持环境安装Git安装Node.js安装Hexo安装 三、博客本地运行本地hexo文件初始化本地启动Hexo服务 四、博客与Github绑定建立SSH密钥,并将公钥配置到github配置Hexo与Github的联系检查github链接访问hexo生成的博客 一、Github新建仓库 登…

Redis核心技术与实战【学习笔记】 - 21.Redis实现分布式锁

概述 在《20.Redis原子操作》我们提到了应对并发问题时,除了原子操作,还可以通过加锁的方式,来控制并发写操作对共享数据的修改,从而保证数据的正确性。 但是,Redis 属于分布式系统,当有多个客户端需要争…

vue3 之 组合式API—watch函数

watch函数 作用:侦听一个或者多个数据的变化,数据变化时执行回调函数 两个额外参数: 1.immediate(立即执行)2.deep(深度侦听) 场景:比如选择不同的内容请求后端不同数据时 如下图 …

[C++]:15.继承

继承 一.继承:1.继承的概念和基本操作:1.概念:2.基本操作: 2.继承格式和多种继承方法:1.基本继承格式:2.继承关系访问限定符 3.子类对象和父类对象之间的赋值:1.为什么存在赋值兼容转换&#xf…

基于Spring Boot的校友录管理系统

基于Spring Boot的校友录管理系统 1、绪论1.1 研究背景及意义1.2 研究内容 2、系统设计2.1 系统架构设计2.2 系统功能设计2.3 数据库设计2.3.1 系统实体类2.3.2 实体之间的联系 3、系统实现3.1 系统登录页3.2 系统首页3.3 校友信息实现3.3.1 校友批量上传 3.4 活动中心实现3.4.…

DS:经典算法OJ题(2)

创作不易,友友们给个三连吧!! 一、旋转数组(力扣) 经典算法OJ题:旋转数组 思路1:每次挪动1位,右旋k次 时间复杂度:o(N^2) 右旋最好情况:k是n的倍数…

‘begin_code.h‘ file not found 问题解决办法

/usr/include/x86_64-linux-gnu/SDL2/SDL_platform.h:179:10: fatal error: ‘begin_code.h’ file not found 问题解决办法 问题 在使用SDL2库时编译程序出现如下问题: 解决办法 在Google搜索未果后,考虑到对于头文件找不到问题,可以通…

clickhouse在MES中的应用-跟踪扫描

开发的MES,往往都要做生产执行跟踪扫描,这样会产生大量的扫描数据,用关系型数据库,很容易造成查询冲突的问题。 生产跟踪扫描就发生的密度是非常高的,每个零部件的加工过程,都要被记录下来,特别…

老师没收学生东西违法吗怎么处理

身为一名老师,面对没收学生东西这个话题,确实让人感到有些尴尬和无奈。毕竟,我们教育的初衷是为了引导学生健康成长,而不是与他们产生矛盾和冲突。 老师在未经允许的情况下没收学生的物品,是违法的。学生的个人财物&a…

python+flask人口普查数据的应用研究及实现django

作为一款人口普查数据的应用研究及实现,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多…

微服务的幂等性

微服务架构设计的中心思想是将服务进行拆分,但是在这个过程中,如果被依赖的服务发生奔溃,就会引起一系列问题。为了解决这个问题,就会引入重试的机制,重试又会引入幂等性的问题,下面我们就分析这个过程&…

面试150 颠倒二进制位 位运算分治 逻辑右移

Problem: 190. 颠倒二进制位 文章目录 思路复杂度位运算分治法 思路 👨‍🏫 参考题解 >>>:逻辑右移(符号位一起移动,高位补零) 复杂度 时间复杂度: O ( log ⁡ n ) O(\log{n}) O(logn) 空间…