为啥 Android 的 HttpUrlConnection 不支持 HTTP/2?

Posted

技术标签:

【中文标题】为啥 Android 的 HttpUrlConnection 不支持 HTTP/2?【英文标题】:Why HTTP/2 is not supported by Android's HttpUrlConnection?为什么 Android 的 HttpUrlConnection 不支持 HTTP/2? 【发布时间】:2019-03-11 07:44:37 【问题描述】:

我刚发现android推荐的http客户端HttpUrlConnection不支持HTTP/2。

是否有特定原因不在 Android 上使用 HTTP/2?

【问题讨论】:

多年前就支持 SPDY,它是 HTTP/2 的前身。您如何确定不支持 HTTP/2?不过,出于多种原因,OkHttp 是更好的选择。 我正在监控服务器端的 https 请求。来自使用 HttpUrlConnection 的 Android 应用程序的请求始终为 HTTP/1.1,即使在 Android 9 上也是如此。而来自 ios 应用程序的请求始终为 HTTP/2。 【参考方案1】:

如果你想利用 HTTP/2,你可以使用 OkHttp:

https://github.com/square/okhttp

无论如何,它都优于 HttpUrlConnection。如果您正在做任何复杂的事情,例如从 Web API 获取复杂的 JSON 响应,我建议您使用 Retrofit:

https://square.github.io/retrofit/

【讨论】:

以上是关于为啥 Android 的 HttpUrlConnection 不支持 HTTP/2?的主要内容,如果未能解决你的问题,请参考以下文章

为啥Android找不到android.graphics.OpenGLContext?

android: NeighboringCellInfo 总是空的!?为啥?

Android:为啥会出现这个错误?

android AsyncTask执行为啥这么慢

为啥 Android 的 HttpUrlConnection 不支持 HTTP/2?

android 为啥没有边框