Java OkHttp3 仅使用 Http/1.1 或 Http/2
Java OkHttp3 only use Http/1.1 OR Http/2
正在尝试为 HTTP 请求做一些测试用例。我想区分 HTTP/1.1 和 HTTP/2。为此,我需要知道我从请求中使用了哪个版本。我还想强制请求使用 HTTP/1.1 或 HTTP/2。我正在为 Java 使用 OkHttp3。
这是我的一个简单请求:
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
您可以强制请求为HTTP/1.1,仅使用以下代码
new OkHttpClient.Builder().protocols(Arrays.asList(Protocol.HTTP_1_1));
您不能强制 HTTP/2,因为 HTTP/1.1 必须在 protocols 列表中。
但是您可以通过检查响应对象protocol来确认
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build();
Response response = client.newCall(request).execute();
assert(response.protocol() == Protocol.HTTP_2);
正在尝试为 HTTP 请求做一些测试用例。我想区分 HTTP/1.1 和 HTTP/2。为此,我需要知道我从请求中使用了哪个版本。我还想强制请求使用 HTTP/1.1 或 HTTP/2。我正在为 Java 使用 OkHttp3。 这是我的一个简单请求:
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
您可以强制请求为HTTP/1.1,仅使用以下代码
new OkHttpClient.Builder().protocols(Arrays.asList(Protocol.HTTP_1_1));
您不能强制 HTTP/2,因为 HTTP/1.1 必须在 protocols 列表中。
但是您可以通过检查响应对象protocol来确认
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build();
Response response = client.newCall(request).execute();
assert(response.protocol() == Protocol.HTTP_2);