java http2.0 使用_「是时候升级java11了」HTTP/2.0 协议

专栏目录

前言

看过前面几篇文章的同学是否也在尝试将Jdk升级到Java11呢?今天笔者要讲解的是微服务内部升级到 HTTP/2.0 协议。

http2优势想必大家都知晓,在这不做过多的介绍。说起 HTTP/2.0 大家所熟知的应该是 Over TLS 版,现有支持HTTP/2.0的浏览器都是实现的 Over TLS 版,

今天带领大家了解 HTTP/2.0 的另一个版本 HTTP/2.0 Clear Text。

HTTP/2.0 Clear Text

HTTP/2.0 Cleartext,简称 h2c(后文将使用这个简称)。使用101 改变协议协商升级为 HTTP2 协议,采用 http2 不做加密,非常适合微服务内部的请求。

享受 http2 的多路复用,降低 tls 对服务器 cpu 的压力(加解密非常费 CPU),而且微服务内部 tls 也增加了证书的维护成本。

升级 h2c

Spring boot 容器笔者使用的是 Undertow,网关使用的 Spring cloud gateway,今天我们主要讲解这2个组件的升级到 h2c。

Undertow 升级到 h2c

打开 Undertow 官网:undertow.io,我们可以看到首页上有这也一个说明:

2d716a7c8eda93f983a557abc9751ee2.png

google 翻译一下:支持HTTP升级,以允许通过HTTP端口多路复用多个协议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用 OkHttp3 发起 HTTP/2.0 POST 请求的 Java 代码: ```java import okhttp3.*; import java.io.IOException; public class Http2PostRequestExample { public static void main(String[] args) throws IOException { OkHttpClient client = new OkHttpClient(); // 构建 HTTP/2.0 的请求 Request request = new Request.Builder() .url("https://example.com/api") .post(RequestBody.create(MediaType.parse("application/json"), "{\"key\":\"value\"}")) .build(); // 发送请求 Response response = client.newCall(request).execute(); // 处理响应 if (response.isSuccessful()) { System.out.println(response.body().string()); } else { System.err.println("Unexpected response code: " + response); } } } ``` 这个例子中,我们使用 OkHttp3 的 `OkHttpClient` 类来创建 HTTP 客户端,然后构建一个 HTTP/2.0 的 POST 请求。在 `post()` 方法中,我们使用 `RequestBody.create()` 方法来创建一个请求体,并指定它的 MIME 类型为 `application/json`。最后,我们使用 `client.newCall(request).execute()` 方法来发送请求,并使用 `response.body().string()` 方法来获取响应内容。 需要注意的是,如果你要使用 HTTP/2.0 协议,你需要确保你的服务器端已经支持 HTTP/2.0。另外,OkHttp3 默认情况下会自动选择最佳的协议版本,如果你想强制使用 HTTP/2.0,可以在创建 `OkHttpClient` 对象时指定 `protocols()` 方法,如下所示: ```java OkHttpClient client = new OkHttpClient.Builder() .protocols(Arrays.asList(Protocol.HTTP_2, Protocol.HTTP_1_1)) .build(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值