我正在使用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请求?
答案 0 :(得分:0)
你正确地迫使OkHttp在这一行使用HTTP / 1.1:
okhttpclient.protocols(Arrays.asList(Protocol.HTTP_1_1));
您确定该构建器生成的OkHttpClient
是您与Retrofit实例一起使用的那个吗?