SPDY 不适用于 OkHttp
Posted
技术标签:
【中文标题】SPDY 不适用于 OkHttp【英文标题】:SPDY is not working with OkHttp 【发布时间】:2014-11-10 05:58:53 【问题描述】:我正在使用带有 OkHttp 2.0.0 的 Retrofit 1.6.1。到目前为止,我们的服务器上还没有启用 SPDY,但昨晚我们已经启用了它。 http://spdycheck.org/ 说我们的服务器上启用了 SPDY,但是当我尝试进行 API 调用时,日志显示使用了 HTTP/1.1:
D/Retrofit(29455): OkHttp-Selected-Protocol: http/1.1
我必须做任何事情来启用带有 OkHttp 的 SPDY 还是应该自动检测到它?
这就是我的设置方式:
OkHttpClient okHttp = new OkHttpClient();
okHttp.setConnectTimeout(15 * 1000, TimeUnit.MILLISECONDS);
okHttp.setReadTimeout(15 * 1000, TimeUnit.MILLISECONDS);
okHttp.setWriteTimeout(15 * 1000, TimeUnit.MILLISECONDS);
OkClient okClient = new OkClient(okHttp);
mRestAdapter = new RestAdapter.Builder()
.setEndpoint(BASE_URL)
.setClient(okClient)
.setConverter(new GsonConverter(mGson))
.setErrorHandler(errorHandler)
.setLogLevel(LogLevel.FULL)
.build();
我正在运行库存 android 4.4.4 的 Nexus 4 和带有库存 ROM 和 Android 4.4.4 的 Moto G 上进行测试
【问题讨论】:
简单问题:基本 URL 是 HTTPS 吗? 是的,基本 URL 是 https 你能分享一下主机名吗? 是的 - youlocalapp.com @JesseWilson 你看了吗? 【参考方案1】:您使用 okhttp2 和低于 5.0 的 android 设备(不支持 SPDY)的原因,因此该设备从未尝试使用 SPDY 连接。默认情况下它使用http1.1。
如果您的设备 > 5.0 okhttp 将自动选择最新的协议 SPDY 或 HTTP/2。但您不能明确设置/强制它。
注意 - Okhttp3 不支持 SPDY,所以不会尝试建立 SPDY 连接。
【讨论】:
以上是关于SPDY 不适用于 OkHttp的主要内容,如果未能解决你的问题,请参考以下文章
OkHttpOkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 )