android - 如何在 Android 设备上使用 http/2 和 Okhttp?

标签 android http okhttp http2

我正在测试一个支持 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?

最佳答案

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

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

关于android - 如何在 Android 设备上使用 http/2 和 Okhttp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850249/

相关文章:

java - 如何同步线程: onTouchEvent and run()?

c# - 如何通过 HTTP 从 C# 查询 Elasticsearch?

java - Okhttp JSON 解析

java - 如何处理在 Android 中小屏幕尺寸下被截断的大 textView?

android - 在 Android 中一段时间​​后隐藏 TextView

javascript - 监听网页上的http请求

java - 在基于 REST 的应用程序上是否有与 Python 的请求模块等效的 Java

android - 改造关闭响应机构

android - OkHttp - Android 从 MySQL 数据库获取数据

java - "The value of the local variable SoundButton38 is not used"但我想使用它?