【网络编程】okhttp源码解析

配置清单

首先了解一下okHttp的配置清单:

  • Dispatcher dispatcher :调度器,⽤于调度后台发起的⽹络请求,有后台总请求数和单主机总请求数的控制。
  • List<Protocol> protocols :⽀持的应⽤层协议,即 HTTP/1.1、HTTP/2 等。
  • List<ConnectionSpec> connectionSpecs :应⽤层⽀持的 Socket设置,即使⽤明⽂传输(⽤于 HTTP)还是某个版本的 TLS(⽤于
  • HTTPS)。
  • List<Interceptor> interceptors :⼤多数时候使⽤的 Interceptor都应该配置到这⾥。
  • List<Interceptor> networkInterceptors :直接和⽹络请求交互的 Interceptor 配置到这⾥,例如如果你想查看返回的 301 报⽂或者未解压的 Response Body,需要在这⾥看。
  • CookieJar cookieJar :管理 Cookie 的控制器,默认空实现。OkHttp 提供了Cookie 存取的判断⽀持(即什么时候需要存 Cookie,什么时候需要读取Cookie,但没有给出具体的存取实现。如果需要存取 Cookie,你得⾃⼰写实现,例如⽤ Map 存在内存⾥,或者⽤别的⽅式存在本地存储或者数据库。
  • Cache cache :Cache 存储的配置。默认是没有,如果需要⽤,得⾃⼰配置出 Cache 存储的⽂件位置以及存储空间上限。
  • HostnameVerifier hostnameVerifier :⽤于验证 HTTPS 握⼿过程中下载到的证书所属者是否和⾃⼰要访问的主机名⼀致。
  • CertificatePinner certificatePinner :⽤于设置 HTTPS 握⼿过程中针对某个 Host 额外的的 Certifificate Public Key Pinner,即把⽹站证书链中的每⼀个证书公钥直接拿来提前配置进 OkHttpClient ⾥去,作为正常的证书验证机制之外的⼀次额外验证。1.验证合法不合法。2.
  • Authenticator authenticator :⽤于⾃动重新认证。配置之后,在请求收到 401 状态码的响应是,会直接调⽤ authenticator ,⼿动加
  • ⼊ Authorization header 之后⾃动重新发起请求。
  • boolean followRedirects :遇到服务器的重定向的要求是否⾃动follow,默认开启
  • boolean followSslRedirects 在重定向时,如果原先请求的是 http,而重定向的⽬标是 https,或者原先请求的是 https ⽽重定向的⽬标是http,是否依然⾃动 follow。(记得,不是「是否⾃动 follow HTTPS URL重定向的意思,⽽是是否⾃动 follow 在 HTTP 和 HTTPS 之间切换的重定向)
  • boolean retryOnConnectionFailure :在请求失败的时候是否⾃动重试。注意,⼤多数的请求失败并不属于 OkHttp 所定义的「需要重试」,这种重试只适⽤于「同⼀个域名的多个 IP 切换重试」「Socket 失效重试」等情况。
  • int connectTimeout :建⽴连接(TCP 或 TLS)的超时时间。
  • int readTimeout :发起请求到读到响应数据的超时时间。
  • int writeTimeout :发起请求并被⽬标服务器接受的超时时间。(为什么?因为有时候对⽅服务器可能由于某种原因⽽不读取你的 Request)

框架结构解析

如图:
在这里插入图片描述

相关推荐

  1. SpringBoot

    2024-02-22 22:06:02       60 阅读
  2. ConcurrentHashMap

    2024-02-22 22:06:02       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-22 22:06:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-22 22:06:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-22 22:06:02       82 阅读
  4. Python语言-面向对象

    2024-02-22 22:06:02       91 阅读

热门阅读

  1. 多模态相关论文笔记

    2024-02-22 22:06:02       52 阅读
  2. react实现拖拽的插件

    2024-02-22 22:06:02       57 阅读
  3. 贪心算法的介绍

    2024-02-22 22:06:02       56 阅读
  4. RESTful API如何使用它构建 web 应用程序。

    2024-02-22 22:06:02       53 阅读
  5. 前端碎碎念

    2024-02-22 22:06:02       51 阅读
  6. 时域去噪:从理论到实践

    2024-02-22 22:06:02       55 阅读
  7. C++从入门到精通 第十六章(STL常用算法)

    2024-02-22 22:06:02       47 阅读
  8. Springboot整合第三方技术-消息

    2024-02-22 22:06:02       46 阅读
  9. 2024/2/20

    2024-02-22 22:06:02       42 阅读
  10. leetcode算法刷题——链表

    2024-02-22 22:06:02       42 阅读