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));
要禁用明文连接,仅允许
https
URLclient.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。 - 修复:直接连接使用套接字工厂。
- 修复:遵循禁用重定向的
OkUrlFactory
API。 - 修复:并发修改
SPDY
SPDY 设置时不会崩溃。
版本 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。 - 允许媒体类型解析中出现悬空分号。