SPDY无法使用OkHttp

时间:2014-09-16 13:03:51

标签: android retrofit spdy okhttp

我正在使用带有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();

我正在使用Nexus 4运行的Android 4.4.4和使用stock rom和Android 4.4.4的Moto G进行测试

1 个答案:

答案 0 :(得分:0)

您使用okhttp2和低于5.0的Android设备(不支持SPDY)的原因,因此该设备从未尝试使用SPDY连接。默认情况下,它使用http1.1。

如果您的设备是> 5.0 okhttp会自动选择SPDY或HTTP / 2的最新协议。但你不能明确地设置/强制它。

注意 - Okhttp3不支持SPDY,因此不会尝试建立SPDY连接。