OkHttp 2.x 变更日志¶
版本 2.7.5¶
2016-02-25
- 修复:更改证书固定器以始终构建完整链。这可以防止在使用 Google Play Services 安全提供者进行证书固定时发生潜在的崩溃。
版本 2.7.4¶
2016-02-07
- 修复:如果安装了 Play Services (GMS) 安全提供者,在查找信任管理器时不会崩溃。
- 修复:上一版本在 Android 上引入了性能回归,原因是查找 CA 证书。此问题现已修复。
版本 2.7.3¶
2016-02-06
- 修复:允许信任的 CA 根证书被
CertificatePinner固定。
版本 2.7.2¶
2016-01-07
- 修复:在缓存命中时,不要急切地释放流分配。我们可能仍需要它们来处理重定向。
版本 2.7.1¶
2016-01-01
- 修复:不要对新创建的连接进行健康检查。这是不必要的工作,如果健康检查失败,可能会使客户端处于不一致的状态。
版本 2.7.0¶
2015-12-13
- 重写连接管理。 以前 OkHttp 的连接池管理 HTTP/2 的空闲和活动连接,但只管理 HTTP/1.x 的空闲连接。通过此次更新,连接池管理所有协议的空闲和活动连接。OkHttp 现在会检测并警告已分配但从未释放的连接,并会强制执行 HTTP/2 流限制。本次更新还修复了
Call.cancel()不在调用线程上执行 I/O 的问题。 - 修复:在日志拦截器中不记录 gzipped 数据。
- 修复:通过 SOCKS 代理连接时,不解析 DNS 地址。
- 修复:移除合成的
OkHttp-Selected-Protocol响应头。 - 修复:在日志拦截器中支持 204 和 205 ‘无内容’ 响应。
- 新增:添加
Call.isExecuted()方法。
版本 2.6.0¶
2015-11-22
-
新增日志拦截器。
logging-interceptor子项目提供简单的请求和响应日志记录。可以配置它来记录头部和正文以便调试。它需要此 Maven 依赖项<dependency> <groupId>com.squareup.okhttp</groupId> <artifactId>logging-interceptor</artifactId> <version>2.6.0</version> </dependency>基本日志配置如下
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC); client.networkInterceptors().add(loggingInterceptor);警告: 在生产环境中避免使用
Level.HEADERS和Level.BODY,因为它们可能将密码和其他认证凭据泄露到不安全的日志中。 -
WebSocket API 现在使用
RequestBody和ResponseBody处理消息。 这是一项向后不兼容的 API 变更。 -
DNS 服务现在是可插拔的。 在某些情况下,这对于手动优先处理特定 IP 地址可能很有用。
-
修复:将
HttpUrl转换为java.net.URI时不再抛出异常。以前,包含|和[等特殊字符的 URL 在受到 URI 过分严格的验证时会出错。 - 修复:在编码的 URL 查询字符串中,不将
+重新编码为%20。OkHttp 在自己编码时偏好使用%20,但在提供了+时会保留它。 - 修复:强制要求调用者在发生 IO 错误时调用
WebSocket.close()。WebSocket 中的错误处理得到显著改进。 - 修复:不对 HTTP/2 请求头使用 SPDY/3 风格的头部拼接。这可能会破坏多个同名头部(如 cookies)的请求。
- 修复:拒绝 URL 主机名中的无效字符。以前,
\0等字符在构建请求时会导致后期崩溃。 - 修复:允许拦截器更改请求方法。
- 修复:通过 HTTP 隧道连接到 HTTPS 服务器时,不使用请求的
User-Agent或Proxy-Authorization。Proxy-Authorization头部被泄露到源服务器。 - 修复:数字可用于 URL scheme 中。
- 修复:改善连接超时恢复。
- 修复:恢复受 Android 4.2.2 之前版本影响的
getsockname崩溃问题。 - 修复:移除对 HTTP/1.0 的部分支持。以前,OkHttp 在看到带有
HTTP/1.0的响应后,会在连接上发送HTTP/1.0。修复后的行为与 Firefox 和 Chrome 一致。 - 修复:允许在
OPTIONS请求中包含请求体。 - 修复:不对 URL fragment 中的非 ASCII 字符进行百分比编码。
- 修复:处理 null fragments。
- 修复:对于在尝试连接之前抛出
IOException的拦截器,不会崩溃。 - 新增:支持 WebDAV HTTP 方法。
- 新增:缓存 WebSocket 帧以提高性能。
- 新增:移除对
TLS_DHE_DSS_WITH_AES_128_CBC_SHA的支持,这是我们唯一剩余的 DSS 加密套件。这与 Firefox 和 Chrome 一致,它们也已移除这些加密套件。
版本 2.5.0¶
2015-08-25
-
超时现在默认为 10 秒。 以前我们默认永不超时,这是一个糟糕的策略。如果建立连接、从连接读取下一个字节或向连接写入下一个字节花费超过 10 秒,您需要手动调整超时设置。
-
OkHttp 现在拒绝包含无效字符的请求头部。 这包括潜在的安全问题(换行符)以及简单的非 ASCII 字符(包括国际字符和表情符号)。
-
调用取消更可靠。 我们以前有一个 bug,当应用程序使用
Call.cancel()时,正在连接的套接字未关闭。 -
更改 HttpUrl 的 scheme 现在会跟踪默认端口。 我们以前有一个 bug,将 URL 从
http更改为https时会使其保留在 80 端口上。 -
Okio 已更新至 1.6.0。
<dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.6.0</version> </dependency> -
新增:
Cache.initialize()。在后台线程中调用此方法可以立即初始化响应缓存。 - 新增:将
MockWebServerRule合并到MockWebServer中。这使得使用MockWebServer编写 JUnit 测试更加容易。MockWebServer库现在依赖于 JUnit,但它仍然适用于所有测试框架。 - 修复:
FormEncodingBuilder现在与浏览器在转义字符方面保持一致。以前我们没有对逗号、括号和其他字符进行百分比编码。 - 修复:放宽对
FormEncodingBuilder的限制,支持构建空表单。 - 修复:超时现在抛出
SocketTimeoutException,而不是InterruptedIOException。 - 修复:更改
MockWebServer,使其在确定 HTTP 请求是否允许请求体时使用与 OkHttp 相同的逻辑。 - 修复:
HttpUrl现在使用 IPv6 地址的规范形式。 - 修复:内部使用
HttpUrl。 - 修复:恢复 Android 4.2.2 EBADF 崩溃问题。
- 修复:如果 HTTP/2 或 SPDY 写入失败导致连接处于不一致状态,不会以
IllegalStateException崩溃。 - 修复:确保默认用户代理是 ASCII 字符。
版本 2.4.0¶
2015-05-22
-
禁止 HTTP 204 和 205 响应中的响应体。 返回此类格式错误的响应的 Web 服务器现在会在客户端触发
ProtocolException。 -
WebSocketListener 有不兼容的变更。
onOpen()方法现在在读取器线程上调用,因此实现必须在此方法返回后才能接收后续的 websocket 消息。onFailure()方法现在包含返回的 HTTP 响应(如果存在)。
版本 2.4.0-RC1¶
2015-05-16
-
新的 HttpUrl API。 它就像
java.net.URL,但更好用。请注意,Request.Builder.url()现在在 URL 格式错误时抛出IllegalArgumentException。(以前的版本在调用格式错误的 URL 时会抛出MalformedURLException。) -
我们改进了连接失败恢复。 我们现在区分设置、连接中和已连接状态,并为每个状态实现适当的恢复规则。这使得
Address不再使用ConnectionSpec。(这是一个不兼容的 API 变更)。 -
FormEncodingBuilder现在使用%20代替+进行空格编码。 两者都符合规范,但%20需要更少的特殊处理情况。 -
Okio 已更新至 1.4.0。
<dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.4.0</version> </dependency> -
如果需要请求体,
Request.Builder不再接受 null。 对于需要请求体的方法,传递 null 现在会失败。请改用空请求体,如下所示RequestBody.create(null, new byte[0]); -
CertificatePinner现在支持通配符主机名。 与证书固定一样,您必须非常小心,避免 破坏 您的应用程序。您需要固定顶级域和*.域以实现全面覆盖。client.setCertificatePinner(new CertificatePinner.Builder() .add("publicobject.com", "sha1/DmxUShsZuNiqPQsX2Oi9uv2sCnw=") .add("*.publicobject.com", "sha1/DmxUShsZuNiqPQsX2Oi9uv2sCnw=") .add("publicobject.com", "sha1/SXxoaOSEzPC6BgGmxAt/EAcsajw=") .add("*.publicobject.com", "sha1/SXxoaOSEzPC6BgGmxAt/EAcsajw=") .add("publicobject.com", "sha1/blhOM3W9V/bVQhsWAcLYwPU6n24=") .add("*.publicobject.com", "sha1/blhOM3W9V/bVQhsWAcLYwPU6n24=") .add("publicobject.com", "sha1/T5x9IXmcrQ7YuQxXnxoCmeeQ84c=") .add("*.publicobject.com", "sha1/T5x9IXmcrQ7YuQxXnxoCmeeQ84c=") .build()); -
拦截器列表现在通过
OkHttpClient.clone()进行深拷贝。 以前的克隆共享拦截器,这使得按请求定制拦截器变得困难。 -
新增:
Headers.toMultimap()方法。 - 新增:
RequestBody.create(MediaType, ByteString)方法。 - 新增:
ConnectionSpec.isCompatible(SSLSocket)方法。 - 新增:
Dispatcher.getQueuedCallCount()和Dispatcher.getRunningCallCount()方法。这些方法对诊断很有用。 - 修复:OkHttp 不再在池化连接之间共享超时设置。以前这导致某些应用程序在连接重用时崩溃。
- 修复:
OkApacheClient现在允许空的PUT和POST请求。 - 修复:Websockets 不再重新缓冲套接字流。
- 修复:Websockets 现在能更好地处理关闭帧。
- 修复:内容类型匹配现在不区分大小写。
- 修复:
Vary头部在使用android.net.http.HttpResponseCache时不会丢失。 - 修复:HTTP/2 在写入底层连接时没有强制执行流超时。现在已经修复。
- 修复:
call.proceed()方法永远不会返回 null。这是一个调用取消方面的 bug。 - 修复:当网络拦截器修改请求时,该更改现在反映在
Response.networkResponse()中。 - 修复:行为异常的缓存现在会抛出受检异常,而不是
NullPointerException。 - 修复:使用 HTTP/2 时,MockWebServer 中未捕获异常的处理得到改善。
版本 2.3.0¶
2015-03-16
-
支持 HTTP/2。 我们已经进行了互操作性测试,没有发现任何问题。HTTP/2 支持是一项重大努力,我们特别感谢 Adrian Cole 帮助我们达到了这个里程碑。
-
默认不再支持 RC4 加密套件。 要连接依赖这些加密套件的旧的、过时的服务器,您必须创建一个自定义的
ConnectionSpec。 -
Beta 版 WebSockets 支持。。
okhttp-ws子项目提供一个新的 websockets 客户端。请尝试一下!当它准备就绪时,我们打算将其包含在核心 OkHttp 库中。 -
Okio 已更新至 1.3.0。
<dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.3.0</version> </dependency> -
修复:提高异步请求的并行度。 OkHttp 的 Dispatcher 的
ExecutorService配置有误,限制了工作线程的数量。如果您正在使用Call.enqueue(),本次更新应显著提高请求并发性。 -
修复:延迟初始化响应缓存。 这避免了在 Android 主线程上初始化 OkHttp 时出现严格模式警告。
-
修复:在 Android 4.4 上禁用 ALPN。 该版本的此功能不稳定,容易导致底层 OpenSSL 代码中出现原生崩溃。
- 修复:当
If-None-Match和If-Modified-Since两个缓存头都适用时,不要同时发送它们。 - 修复:当端口超出范围时立即失败。
- 修复:为 multipart 请求体提供
Content-Length头部。 - 修复:如果明确禁止明文连接时尝试进行明文连接,则抛出
UnknownServiceException。 - 修复:当主机验证失败时,抛出
SSLPeerUnverifiedException。 - 修复:MockWebServer 显式关闭套接字。(在某些 Android 版本上,关闭套接字的输入流和输出流不足够。)
- 修复:缓冲传出的 HTTP/2 帧,以限制创建的传出帧数量。
- 修复:避免因磁盘已满导致缓存写入失败时崩溃。
- 修复:改进私有响应的缓存。
- 修复:更新默认缓存的响应码。
- 修复:重用的
Request.Builder实例不再保留陈旧的 URL 字段。 - 新增:ConnectionSpec 现在可以配置为使用 SSL 套接字的默认加密套件。使用方法是将加密套件设置为
null。 - 新增:支持带有请求体的
DELETE方法。 - 新增:
Headers.of(Map)方法从 Map 创建头部。
版本 2.2.0¶
2014-12-30
-
RequestBody.contentLength()现在抛出IOException。 这是一项源代码不兼容的变更。如果您的代码调用了RequestBody.contentLength(),此次更新将导致编译失败。但这项变更是二进制兼容的:为 OkHttp 2.0 和 2.1 编译的代码在此次更新后仍可正常工作。 -
COMPATIBLE_TLS不再支持 SSLv3。 为应对 POODLE 漏洞,OkHttp 在协商 HTTPS 连接时不再提供 SSLv3。如果您仍然需要连接运行 SSLv3 的 Web 服务器,则必须手动配置自己的ConnectionSpec。 -
OkHttp 现在提供拦截器。 拦截器是一个强大的机制,可以监控、重写和重试调用。拦截器文档 是对这个新 API 的全面介绍。
-
新增:用于迭代和选择性清除响应缓存的 API。
- 新增:支持 SOCKS 代理。
- 新增:支持
TLS_FALLBACK_SCSV。 - 新增:将 HTTP/2 支持更新至
h2-16和hpack-10。 - 新增:阻止重试非幂等请求的 API。
- 修复:移除 NPN 支持。今后我们只支持 ALPN。
- 修复:主机名验证器现在是严格的。这与现代浏览器中的主机名验证器一致。
- 修复:改进对行为异常的 HTTP 代理的
CONNECT处理。 - 修复:不重试因超时失败的请求。
- 修复:缓存包含适当响应头的 302 和 308 响应。
- 修复:改善使用代理选择器的连接的连接池。
- 修复:在桌面环境使用 ALPN 时,不会泄露连接。
- 修复:将 Jetty ALPN 更新至
7.1.2.v20141202(Java 7) 和8.1.2.v20141202(Java 8)。这修复了 TLS 会话恢复中的一个 bug,该 bug 可能导致选择了错误的协议。 - 修复:在连接前断开连接时,SPDY 和 HTTP/2 不会崩溃。
- 修复:避免对数字代理地址进行反向 DNS 查找。
- 修复:恢复 http/2 帧日志记录功能。
- 修复:将授权尝试次数限制为 20 次。
版本 2.1.0¶
2014-11-11
- 新增:用于与加密套件和 TLS 版本交互的类型安全 API。
- 修复:在混合授权挑战与上传重试时不会崩溃。
版本 2.1.0-RC1¶
2014-11-04
-
OkHttp 现在缓存私有响应。我们已从共享缓存更改为私有缓存,现在将存储使用
Authorization头的响应。这意味着 OkHttp 的缓存不应用于位于用户代理和源服务器之间的中间设备上。 -
TLS 配置更新。 OkHttp 现在在支持的情况下显式启用 TLSv1.2、TLSv1.1 和 TLSv1.0。它将继续仅执行一次回退,到 SSLv3。应用程序现在可以使用
ConnectionSpec类进行配置。要禁用 TLS 回退
client.setConnectionSpecs(Arrays.asList( ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT));要禁用明文连接,仅允许
httpsURLclient.setConnectionSpecs(Arrays.asList( ConnectionSpec.MODERN_TLS, ConnectionSpec.COMPATIBLE_TLS)); -
新增加密套件。 请确认您的 Web 服务器可以通过这组有限的加密套件访问。
Android Name Version TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 5.0 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 5.0 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 5.0 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 4.0 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 4.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 4.0 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 4.0 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 4.0 TLS_ECDHE_RSA_WITH_RC4_128_SHA 4.0 TLS_DHE_RSA_WITH_AES_128_CBC_SHA 2.3 TLS_DHE_DSS_WITH_AES_128_CBC_SHA 2.3 TLS_DHE_RSA_WITH_AES_256_CBC_SHA 2.3 TLS_RSA_WITH_AES_128_GCM_SHA256 5.0 TLS_RSA_WITH_AES_128_CBC_SHA 2.3 TLS_RSA_WITH_AES_256_CBC_SHA 2.3 SSL_RSA_WITH_3DES_EDE_CBC_SHA 2.3 (Deprecated in 5.0) SSL_RSA_WITH_RC4_128_SHA 2.3 SSL_RSA_WITH_RC4_128_MD5 2.3 (Deprecated in 5.0) -
Okio 已更新至 1.0.1。
<dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.0.1</version> </dependency> -
新增 API 以方便进行证书固定。 请注意,证书固定是危险的,可能导致您的应用程序无法信任您的服务器!
-
缓存改进。 本次版本修复了一些严重的缓存问题,包括在某些访问模式下缓存可能损坏的 bug。我们还修复了因日志损坏导致缓存被清除的 bug。我们新增了 API 用于配置请求的
Cache-Control头部以及手动清除缓存。 -
请求取消修复。 本次更新修复了同步请求无法通过标签取消的 bug。本次更新避免了在
onResponse()抛出IOException时崩溃。该失败现在将被记录日志,而不是通知线程的未捕获异常处理程序。我们新增了一个 APICall.isCanceled()来检查调用是否已取消。 -
新增:更新
MultipartBuilder以支持内容长度。 - 新增:支持模拟
OkHttpClient和Call。 - 新增:更新至 h2-14 和 hpack-9。
- 新增:OkHttp 默认包含一个用户代理,例如
okhttp/2.1.0-RC1。 - 修复:处理响应码
308 永久重定向。 - 修复:如果调用被取消,不要跳过回调。
- 修复:允许主机名包含下划线。
- 修复:允许在
OkApacheClient中覆盖 content-type。 - 修复:直接连接使用套接字工厂。
- 修复:遵循禁用重定向的
OkUrlFactoryAPI。 - 修复:并发修改
SPDYSPDY 设置时不会崩溃。
版本 2.0.0¶
本次版本承诺提供稳定的 2.0 API。有关从 1.x 升级到 2.x 的建议,请阅读 2.0.0-RC1 的变更。
2014-06-21
- API 变更:在
Callback.onFailure()中使用IOException。这是一项源代码不兼容的变更,与 OkHttp 2.0.0-RC2 使用Throwable不同。 - 修复:修复了一个缓存 bug,以前我们没有存储重写的请求头,例如
Accept-Encoding。 - 修复:修复了处理 SPDY 窗口大小的 bug。这曾导致某些大文件下载停滞。
- 将语言级别更新至 Java 7。(OkHttp 需要 Android 2.3+ 或 Java 7+。)
版本 2.0.0-RC2¶
2014-06-11
本次更新修复了 2.0.0-RC1 中的问题。有关从 1.x 升级到 2.x 的建议,请阅读 2.0.0-RC1 的变更。
- 修复:不泄露连接!2.0.0-RC1 中存在一个回归问题,连接既未关闭也未池化。
- 修复:恢复 OkHttpClient 的超时方法的 Builder 风格返回类型,以实现与 OkHttp 1.x 的二进制兼容性。
- 修复:在 SPDY/3.1 上不跳过客户端流 1。这修复了与
https://google.com的 SPDY 连接问题,该网站不遵循 SPDY/3.1 规范! - 修复:始终配置 NPN 头部。当 SPDY 和 HTTP/2 都被禁用时,这修复了与
https://facebook.com的连接问题。否则会收到意外的 NPN 响应,导致 OkHttp 崩溃。 - 修复:当 HPACK 数据大于 16383 字节时,写入 continuation 帧。
- 修复:不丢失异步调用中抛出的未捕获异常。
- 修复:当请求体不合法时立即抛出异常。以前我们在构建请求时忽略了这个问题,只在之后以
NullPointerException崩溃。 - 修复:在
OkUrlFactory响应中包含一个向后兼容的OkHttp-Response-Source头部。 - 修复:在使用 Call API 发出的请求中不包含默认的 User-Agent 头部。使用 OkUrlFactory 发出的请求将继续包含默认的用户代理。
-
新增:类似 Guava 的 API,用于创建头部
Headers headers = Headers.of(name1, value1, name2, value2, ...). -
新增:请求体中的 content-type 头部现在是可选的。
- 新增:
Response.isSuccessful()是一个方便的 API,用于检查响应码。 - 新增:响应体现在可以在回调之外读取。响应体必须始终关闭,否则会泄露连接!
- 新增:用于创建 multipart 请求体 (
MultipartBuilder) 和 form encoding 请求体 (FormEncodingBuilder) 的 API。
版本 2.0.0-RC1¶
2014-05-23
OkHttp 2 围绕一个新的、忠于 HTTP 的 API 设计,包含请求、响应、头部和调用的类。它使用现代 Java 模式,如不可变性和链式构建器。API 现在除了同步阻塞调用之外,还提供异步回调。
API 变更¶
-
新的 Request 和 Response 类型, 每个都有自己的构建器。还有一个
RequestBody类用于将请求体写入网络,以及一个ResponseBody用于从网络读取响应体。独立的Headers类提供对 HTTP 头部的完整访问。 -
新增 Okio 依赖。 OkHttp 现在依赖于 Okio,这是一个 I/O 库,可以更轻松地访问、存储和处理数据。在内部使用此库使 OkHttp 更快,同时消耗更少的内存。您可以将
RequestBody写入 Okio 的BufferedSink,将ResponseBody作为 Okio 的BufferedSource读取。标准InputStream和OutputStream访问也可用。 -
新增 Call 和 Callback 类型 用于执行请求并接收响应。这两种类型的调用都可以通过
Call或OkHttpClient取消。 -
URLConnection 支持已移至 okhttp-urlconnection 模块。 如果您从 1.x 升级,此变更将影响您。您需要将
okhttp-urlconnection模块添加到您的项目,并使用OkUrlFactory创建新的HttpURLConnection实例。// OkHttp 1.x: HttpURLConnection connection = client.open(url); // OkHttp 2.x: HttpURLConnection connection = new OkUrlFactory(client).open(url); -
不再支持自定义缓存。 在 OkHttp 1.x 中,可以使用
java.net.ResponseCache和 OkHttp 的OkResponseCache接口定义自己的响应缓存。这两个 API 都已移除。在 OkHttp 2 中,内置的磁盘缓存是唯一支持的响应缓存。 -
HttpResponseCache 已重命名为 Cache。 请使用
OkHttpClient.setCache(...)安装它,而不是OkHttpClient.setResponseCache(...)。 -
OkAuthenticator 已替换为 Authenticator。 这个新的认证器可以访问完整的传入响应,并可以使用任何适当的后续请求进行响应。
Challenge类现在是一个顶级类,Credential已替换为一个名为Credentials的工具类。 -
OkHttpClient.getFollowProtocolRedirects() 已重命名为 getFollowSslRedirects()。我们将 protocol 一词保留给正在使用的 HTTP 版本(HTTP/1.1、HTTP/2)。这个方法的旧名称具有误导性;它一直用于配置
https://和http://scheme 之间的重定向。 -
RouteDatabase 不再是公共 API。 OkHttp 继续跟踪哪些路由失败,但此信息不再在 API 中暴露。
-
ResponseSource 已移除。 这个枚举暴露了响应是来自缓存、网络还是两者。OkHttp 2 在新的
Response类中通过对缓存和网络响应的原始访问提供了更多细节。 -
TunnelRequest 已移除。 它指定了如何连接到 HTTP 代理。OkHttp 2 对此使用新的
Request类。 -
Dispatcher 是一个新类,用于管理异步调用的队列。它实现了对总在途调用数和每主机在途调用数的限制。
实现变更¶
- 支持 Android
TrafficStats套接字标签。 - 重定向时移除认证头部。
- 新增支持压缩数据帧。
- 按顺序处理 push promise 回调。
- 更新到 http/2 draft 12。
- 更新到 HPACK draft 07。
- 新增 ALPN 支持。Maven 将在 OpenJDK 8 上使用 ALPN。
- 更新 NPN 依赖项,目标为
jdk7u60-b13和Oracle jdk7u55-b13。 - 确保 SPDY 变体支持零长度的 DELETE 和 POST。
- 防止在元数据读取失败时泄露缓存项的 InputStream。
- 在路由中使用字符串标识 TLS 版本。
- 新增 HTTP/2 帧日志记录器。
- 将
httpMinorVersion替换为Protocol。将 HTTP/1.0 暴露为一个潜在协议。 - 使用
Protocol描述帧结构。 - 实现 HTTP/1.1 流的写入超时。
- 避免使用 SPDY 流 ID 1,因为它通常用于 UPGRADE。
- 在
Authenticator中支持 OAuth。 - 允许媒体类型解析中出现悬空分号。