16

我正在测试一个支持 HTTP/2 的站点,就像这样,我尝试使用 okhttp 发送请求:

OkHttpClient okHttpClient = new OkHttpClient();

Request request = new Request.Builder()
        .url("https://www.google.it")
        .build();


okHttpClient.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Request request, IOException e) {
        e.printStackTrace();
    }

    @Override
    public void onResponse(Response response) throws IOException {
        Log.d("TestHttp", "OkHttp-Selected-Protocol: " + response.header("OkHttp-Selected-Protocol"));
        Log.d("TestHttp", "Response code is " + response.code());
    }
});

在日志中我得到了这样的东西:

OkHttp-Selected-Protocol: http/1.1

okhttpClient 选择使用http/1.1,如何强制使用http/2?

4

1 回答 1

4

Okhttp 2.5+ 通过 ALPN 仅支持 5.0+ 以上的 http/2。

但是您可以通过 NPN 修改源代码以支持 4.0+ 以上的 http/2。

于 2015-12-10T03:37:45.937 回答