All Classes and Interfaces
Class
Description
到源服务器的连接的规范。对于简单的连接,这是服务器的主机名和端口。如果显式请求了
代理(或显式请求了no proxy)则还包括该代理信息
对于安全连接,该地址还包括SSL套接字工厂、主机名验证器和证书
共享相同的
Address的HTTP请求也可能共享相同的Connection在连接到代理服务器之前执行抢占式身份验证,
或者在收到来自源web服务器或代理服务器的挑战后执行被动身份验证.
使用一组可信根证书来构建可信链的证书链清理器。
这个类复制了在TLS握手期间执行的clean chain构建。我们更喜欢它们
存在的其他机制,比如
AndroidCertificateChainCleaner简单的索引,包含已加载到内存中的受信任根证书
从应用程序代码连接到网络代码。首先,它从用户请求构建网络请求。
然后它继续调用网络。最后,它从网络响应构建用户响应
浏览器对象
实用方法工具
缓存HTTP和HTTPS对文件系统的响应,以便可以重用它们,从而节省时间和带宽.
缓存控制头,带有来自服务器或客户端的缓存指令。
这些指令设置了哪些响应可以存储,以及哪些请求可以由存储的响应来满足的策略
构建一个
Cache-Control请求头服务来自缓存的请求并将响应写入缓存。
缓存请求信息
给定一个请求和缓存的响应,这将确定是使用网络、缓存还是两者都使用
选择缓存策略可能会向请求添加条件(比如条件get的“if - modified - since”报头)
或向缓存的响应添加警告(如果缓存的数据可能过时)
异步回调信息
这是链中的最后一个拦截器
它对服务器进行网络调用
从Java在TLS api中构建的原始数组中计算有效的证书链。
清理链返回一个证书列表, 其中第一个元素是
chain[0],
每个证书由后面的证书签名,最后一个证书是受信任的CA证书
使用链清理器可以省略与TLS握手无关的意外证书,
并提取受信任的CA证书,以便进行证书固定限制哪些证书受信任。将证书固定起来可以防御对证书颁发机构的攻击。
它还可以防止通过应用程序用户知道或不知道的中间人证书颁发机构进行连接
固定证书限制了服务器团队更新其TLS证书的能力。通过固定证书,
您将承担额外的操作复杂性,并限制您在证书颁发机构之间迁移的能力。
未经服务器的TLS管理员许可,请勿使用证书固定!
如果
TrustManager不接受自签名证书,
则CertificatePinner不能用于pin自签名证书构建已配置的证书
RFC 7235兼容的认证
并非所有平台都支持所有密码套件。由于创建了新的密码
套件(为了更强的私密性、更好的性能等),它们将被平台采用,
然后在这里公开。为了简单起见,我们省略了Android(通过API level 24)
或Java(通过JDK 9)上不可用的密码套件
打开到目标服务器的连接并继续到下一个拦截器.
HTTP、HTTPS或HTTPS+HTTP/2连接的套接字和流。
可以用于多个HTTP请求/响应交换。连接可以直接到源服务器,也可以通过代理
管理HTTP和HTTP/2连接的重用,以减少网络延迟。 共享相同的
Address的HTTP请求可能共享一个Connection
该类实现了哪些连接保持开放以供将来使用的策略处理连接规范回退策略:当安全套接字连接由于握手/协议问题而失败时,
可能会使用不同的协议重试连接。实例是有状态的,应该创建并用于单个连接尝试
指定HTTP传输通过的套接字连接的配置。对于
https: url,这包括在协商安全连接时要使用
的TLS版本和密码套件,只有在SSL套接字中也启用了连接规范中配置的TLS版本时,才会使用它们。例如,
如果SSL套接字没有启用TLS 1.3,即使它在连接规范中出现,也不会被使用。同样的策略也适用于密码套件
使用ConnectionSuite.Builder.allEnabledTlsVersions()和ConnectionSuite.Builder.allEnabledCipherSuites()
将所有特性选择延迟到底层SSL套接字消息转换器接口
表单转换器,可用于自动系列化表单参数
Cookie's相关工具支持
这个类不支持cookies上的附加属性,比如Chromium的Priority=HIGH extension
为HTTP cookie提供策略和持久性
作为策略,此接口的实现负责选择接受和拒绝哪些cookie。一个合理的策略是拒绝所有cookie,
尽管这可能会干扰需要cookie的基于会话的身份验证方案
可以是 xml、yml、protobuf 等任何一种格式的数据
异步 Http 请求任务
同步 Http 请求任务
执行结果
HTTP响应报文体
任务监听接口
可以是 xml、yml、protobuf 等任何一种格式的数据
HTTP 授权工厂
使用文件系统上有限空间的缓存。每个缓存条目都有一个字符串键和固定数量的值
每个键必须匹配regex [a-z0-9_-]{1,64}。值是字节序列,可以作为流或文件访问
每个值必须在
0和Integer之间。MAX_VALUE字节的长度Access to read and write files on a hierarchical data store.
关于何时执行异步请求的策略
每个dispatcher使用一个
ExecutorService在内部运行调用。
如果您提供自己的执行程序,它应该能够并发地运行配置的最大调用数专有名称(DN)解析器。该解析器只支持从DN中提取字符串值。
它不支持十六进制字符串样式的值.
设备信息
解析主机名的IP地址的域名服务。大多数应用程序将使用默认的
SYSTEM DNS服务,应用程序可能提供
它们自己的实现来使用不同的DNS服务器
选择IPv6地址、选择IPv4地址或强制使用特定的已知IP地址
文件下载
下载监听接口
浏览器解析引擎
错误码信息
用于度量事件的侦听器。扩展这个类来监视应用程序的HTTP调用的数量、大小和持续时间
所有事件方法必须快速执行,不需要外部锁定,不能抛出异常,不能尝试更改事件参数,
也不能重入客户机。任何对文件或网络的IO写入都应该异步进行
Transmits a single HTTP request and a response pair.
文件-异步回调
请求参数-文件处理
Form请求体内容
GET参数构造器
GET请求处理
TLS握手的记录。对于HTTPS客户机,客户机是local,远程服务器
此值对象描述完成的握手。使用
ConnectionSuite设置新的握手策略单个HTTP消息的头字段。值是未解释的字符串;
使用
Request和Response解释头信息
该类维护HTTP消息中的头字段的顺序
这个类从值中删除空白。它从不返回带开头或结尾空白的值HTTP header: the name is an ASCII string, but the value can be UTF-8.
可以用来发送HTTP/1.1消息的套接字连接。这个类严格执行以下生命周期:
没有请求主体的交换器可以跳过创建和关闭请求主体。没有响应体的交换器可以
调用
newFixedLengthSource(0)
并可以跳过读取和关闭该源使用HTTP/2帧对请求和响应进行编码.
到远程对等点的套接字连接。连接主机可以发送和接收数据流.
Listener of streams and settings initiated by the peer.
Reads HTTP/2运输框架
此实现假设我们没有向对等端发送增加的
frame size设置。
因此,我们希望所有帧的最大长度为Http2.INITIAL_MAX_FRAME_SIZE。逻辑双向流.
编写HTTP/2传输帧.
请求参数构造器
Encode HTTP请求和decode HTTP响应
发送HTTP请求辅助类
工厂的call,可以用来发送HTTP请求并读取它们的响应
当您创建一个
Httpd实例并将其用于所有HTTP调用时,体现Httpd的性能最佳
这是因为每个客户机都拥有自己的连接池和线程池。重用连接和线程可以减少延迟并节省内存
相反,为每个请求创建一个客户机会浪费空闲池上的资源
Httpd还为HTTP/2连接使用守护进程线程。如果它们保持空闲,就会自动退出HTTP代理配置
HTTP请求处理
Httpv 客户端接口
Http 配置器
串行预处理器
发送HTTP请求辅助类
发送HTTP请求辅助类
HTTP状态
这个类最初是由以下类组成的Twitter Hpack.
观察、修改和潜在的短路请求,并返回相应的响应
通常,拦截器在请求或响应上添加、删除或转换标头
Escalate internal APIs in
http so they can be used from Http's implementation
packages.Http's 的内部缓存接口
应用程序不应该实现这个:而是使用
CacheOpenJDK 9+
The MIME Multipart/Related Content-type
用于复合对象
文件上传
可运行的实现,它总是设置它的线程名
调用是准备执行的请求。电话可以取消。
由于此对象表示单个请求/响应对(流),因此不能执行两次.
网络操作系统
代理选择器
返回
Proxy.NO_PROXY访问特定于平台的特性.
POST参数构造器
POST请求处理
预处理器,支持异步
在HTTP请求任务正式开始之前执行
进度(上传或下载)
进度监听
协议vs计划 它的名字是:
URL.getProtocol()
返回scheme (http, https, etc.),
而不是协议(http/1.1, spdy/3.1,等等) 请使用这个协议来识别它是如何被分割的
Httpd使用协议这个词来标识HTTP消息是如何构造的仅
HTTP/2
在客户端处理服务器发起的HTTP请求
返回true以请求取消已推的流。
注意,这并不保证将来的帧不会到达流IDPUT参数构造器
PUT请求处理
实际调用准备执行的请求
连接提供
真实连接池
承载整个拦截器链的具体拦截器链:
所有应用程序拦截器、Httpd核心、所有网络拦截器,最后是网络调用者.
响应体只能使用一次
一个HTTP请求。如果该类的
Request.body为空或自身为不可变,则该类的实例是不可变的.内容对象
请求参数构造器
请求调用者
HTTP响应。该类的实例不是不可变的:
响应体是一次性的值,可能只使用一次,然后关闭。所有其他属性都是不可变的.
从源服务器到客户机应用程序的一次性流,包含响应主体的原始字节。 到web服务器的活动连接支持每个响应主体。
这对客户机应用程序施加了义务和限制,每个响应主体由一个有限的资源(如socket(实时网络响应)或一个打开的
文件(用于缓存的响应)来支持。如果不关闭响应体,将会泄漏资源并减慢或崩溃
这个类和
Response都实现了Closeable。关闭一个响应就是关闭它的响应体。如果您
调用NewCall.execute()或实现Callback.onResponse(org.miaixz.bus.http.NewCall, org.miaixz.bus.http.Response),则必须通过
调用以下任何方法来关闭此主体:
Response.close()
Response.body().close()
Response.body().source().close()
Response.body().charStream().close()
Response.body().byteStream().close()
Response.body().bytes()
Response.body().string()
这个类可以用来传输非常大的响应。例如,可以使用这个类来读取大于分配给当前进程的整个内存的响应。
它甚至可以传输大于当前设备总存储的响应,这是视频流应用程序的一个常见需求
因为这个类不会在内存中缓冲完整的响应,所以应用程序可能不会重新读取响应的字节。使用ResponseBody.bytes()
或ResponseBody.string()将整个响应读入内存。或者使用ResponseBody.source()、ResponseBody.byteStream()
或ResponseBody.charStream()来处理响应该拦截器从失败中恢复,并根据需要进行重定向
如果调用被取消,它可能会抛出
IOException连接用于到达抽象源服务器的具体路由
在创建连接时,客户机有许多选项
每个路由都是这些选项的特定选择
创建到目标地址的新连接时要避免的失败路由的黑名单
如果尝试连接到特定IP地址或代理服务器时出现故障,
则会记住该故障并首选备用路由
An exception thrown to indicate a problem connecting via a single Route.
选择连接到源服务器的路由。每个连接都需要选择代理
服务器、IP地址和TLS模式。连接也可以循环使用
选定的路由
设置描述发送对等点的特征,接收对等点使用这些特征
设置的作用域是
connectionHTTP响应“HTTP/ 1.1200 OK”这样的在线状态.
Websockt 的 Stomp 客户端
当取消HTTP/2流而不损坏承载它的套接字时抛出
A database of public suffixes provided by
publicsuffix.org.
回调处理
在Http的应用程序层和网络层之间建立桥梁
该类公开:连接、请求、响应和流
签名证书索引
统一资源定位器(URL),其模式为
http或https。使用这个类来组合和分解Internet地址
这个类有一个现代的API。它避免了惩罚性的检查异常:get()对无效的输入抛出IllegalArgumentException,
或者parse()如果输入是无效的URL,则返回null。您甚至可以明确每个组件是否已经编码User-Agent信息对象
web socket 监听器
web socket协议信息
兼容的WebSocket框架阅读器.
RFC 6455兼容的WebSocket帧写入器
这个类不是线程安全的