【问题标题】:How to use http/2 with Okhttp on Android devices?如何在 Android 设备上使用 http/2 和 Okhttp?
【发布时间】:2015-10-29 06:37:58
【问题描述】:

我正在测试一个支持 HTTP/2 的网站,like this, 我尝试使用 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?

【问题讨论】:

标签: android http okhttp http2


【解决方案1】:

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

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

【讨论】:

  • 如何配置ALPN?
  • 所以 OkHttp 3.9.0+ 使用 Google Play Services 提供的 ALPN 开箱即用地处理 HTTP2。
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 2019-04-27
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多