OkHttpClient不支持Http网络调用的Http 1.1

时间:2017-04-14 06:53:52

标签: android https okhttp3 http2 okhttp

我正在使用OkTttpClient的Retrofit 2。我想建立具有keep-alive属性的连接,以便与启用了Https的服务器建立持久连接。

现在我的问题出现了,当我对Https端点进行网络调用时,请求遵循Http2.0协议,并且忽略了标题 Connection:keep-alive ,但是当我发出相同的请求时到Http结束点接受标头并且持久连接有效。 因此,要为Https调用使用Http1.1协议,我将其手动添加到我的OkHttpClient。

 OkHttpClient.Builder okhttpclient = new OkHttpClient.Builder();
 okhttpclient.protocols(Arrays.asList(Protocol.HTTP_1_1));

但OkHttpClient仍向服务器发送Http2.0请求以进行Https网络呼叫。

我甚至试图通过使用来保持用户端的持久连接 ConnectionPool课程,但没有发现这是一个很好的解决方案。

我还尝试将sslSocketFactory添加到我的OkHttpClient以获取Https请求。这也没有成功。

如何使用OkHttpClient强制Http1.1协议处理我的Https请求?

1 个答案:

答案 0 :(得分:0)

你正确地迫使OkHttp在这一行使用HTTP / 1.1:

okhttpclient.protocols(Arrays.asList(Protocol.HTTP_1_1));

您确定该构建器生成的OkHttpClient是您与Retrofit实例一起使用的那个吗?