如何在OKHttp客户端连接中显式打开多个流

时间:2017-06-17 01:12:17

标签: okhttp3 http2 okhttp

我正在使用OkHTTP客户端访问HTTP / 2服务器。我有一个用例,我想在同一个连接上打开多个流。

我正在使用以下代码创建OkHTTP客户端。

ConnectionPool connectionPool = new ConnectionPool(5,
                CONNECTION_POOL_TIMEOUT_MILLISECONDS, TimeUnit.MILLISECONDS);

        return new OkHttpClient.Builder()
                .connectTimeout(5,TimeUnit.SECONDS)
                .writeTimeout(5, TimeUnit.SECONDS)
                .readTimeout(5, TimeUnit.SECONDS)
                .connectionPool(connectionPool)
                .build(); 

此客户端可以在连接池中具有5个打开的连接。 现在我想使用上面的客户端进行以下请求,

okHttpClient.newCall(request1.build()).execute()
okHttpClient.newCall(request2.build()).execute()

我希望这些请求作为单独的流在同一个连接上,而不是新的连接。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

如果符合条件,OkHttp会自动为您的请求使用相同的套接字。请求必须是HTTPS,服务器需要支持HTTP / 2,并且您的代码必须在Android 5+或Java 9 +上运行。

答案 1 :(得分:0)

OkHttp将使用相同的连接作为唯一服务器地址。通过该连接发送的请求每次都会在新流中使用。