支持 HTTP/1.1 和 HTTP/2 与 JAX-RS 客户机

2022-09-01 21:29:03

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

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

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

我目前正在使用泽西岛的 Jetty HTTP/1.1 传输连接器HTTP/2 传输连接器的自定义实现


答案 1

随 Java 11 提供的 Java HTTP 客户端支持 HTTP/1.1 和 HTTP/2(参见 Java HTTP 客户端简介)。

我已经用它构建了一个连接器 泽西连接器 使用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


答案 2

事实上,ALPN仅由jdk从JDK9 http://unrestful.io/2015/10/09/alpn-java.html

这不是由 JAX-RS 客户端 API 处理的


推荐