java - 通过 JAX-RS 客户端支持 HTTP/1.1 和 HTTP/2

标签 java http jersey jetty http2

我想为 JAX-RS 客户端实现一个支持 HTTP/1.1 和 HTTP/2 的 JAX-RS 客户端。

如果服务器支持带有 HTTP/2 的 ALPN,则使用 HTTP/2,如果服务器不提供任何信息,则使用 HTTP/1.1。

我已经阅读了一些关于 ALPN 的文章,这似乎是可能的,但我没有找到任何同时支持这些协议(protocol)的东西。我没有设法将它们连接在一起。

我目前正在使用 Jetty HTTP/1.1 transport connector for Jerseycustom implementation for HTTP/2 transport connector .

最佳答案

Java 11 提供的 Java HTTP 客户端支持 HTTP/1.1 和 HTTP/2(参见 Introduction to the Java HTTP Client)。

我已经使用它构建了一个连接器 Jersey Connector using java.net.http.HttpClient . 您可以使用它添加以下依赖项。

<dependency>
  <groupId>com.github.nhenneaux.jersey.connector.httpclient</groupId>
  <artifactId>jersey-httpclient-connector</artifactId>
  <version>0.2.2</version>
</dependency>

Maven Central

关于java - 通过 JAX-RS 客户端支持 HTTP/1.1 和 HTTP/2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42348041/

相关文章:

java - REST Jersey 导致 HTTP 状态 500 - 内部服务器错误

java - 使用 JAX-RS 新配置 "Application"类(无 web.xml)更改服务器设置?

java - Jersey 资源过滤器和 OPTIONS 方法

java - OkHttp3 抓取的 HTML 页面不完整,需要 JavaScript 吗?

java - 为什么 LinkedList 没有遍历所有实体?

java - 带泛型参数的函数 java

ruby-on-rails - 在 Ruby on Rails 中发送 SOAP 请求的最佳方式是什么?

java - ORMLite 抛出 'generated-id key was not set by the update call'

c - 如何用C语言从本地服务器发送HTTP协议(protocol)

java - 寻找最长公共(public)子串java的高效循环程序