【问题标题】:Android: how to use a single HTTP/2 connection?Android:如何使用单个 HTTP/2 连接?
【发布时间】:2019-03-11 05:00:49
【问题描述】:

我们的移动应用需要同时发出 2 个不同的 HTTPS 请求。我们想确保只使用 1 个连接。我们的服务器支持 HTTP/2

iOS 上,一切正常:只建立了 1 个连接。

Android 上,我们的应用正在建立 2 个不同的连接。

是否也可以在 Android 上实现相同的功能?

更新:

找到原因了:Android推荐的http客户端HttpUrlConnection不支持HTTP/2!

您对在 Android 上使用 HTTP/2 有什么建议?

【问题讨论】:

  • 您可以尝试使用System.setProperty("http.keepAlive","true"); 您需要自己维护连接并照顾urlConnection.disconnect();。 -- 我删除了我的答案是为了添加这个评论(它会得到更多的关注——人们通常会寻找未回答的问题),因为我对这个建议的结果有点不确定。我只是阅读了文档——过去我从未遇到过连接或连接池的任何问题......所以我真的没有挖得太深。
  • @Barns 看起来 HttpUrlConnection 使用的是 HTTP/1.1 而不是 HTTP/2。这很可能是原因!
  • 根据文档OkHttp 支持HTTP/2。
  • 但是貌似在HttpUrlConnection上,强制使用HTTP/1.1:stackoverflow.com/questions/44122781/…
  • 我确定您对 HttpUrlConnection 的看法是正确的,我指的是OKHttp :: github.com/square/okhttp

标签: android networking https httpurlconnection http2


【解决方案1】:

最终我能够通过使用 OkHttp 库在 Android 上发出 HTTP/2 请求:

http://square.github.io/okhttp/

非常令人失望的是HttpUrlConnection(Android 库的默认 http 客户端)不支持 HTTP/2,甚至在最新的 Android 9 上也不支持!

iOS 中的 HTTP/2 支持始于 iOS 9,即 3 年前的 2015 年!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-05
    • 2015-08-29
    • 2017-05-11
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多