gpt4 book ai didi

使用 ssl 的 Spring 5 WebClient

转载 作者:IT老高 更新时间:2023-10-28 13:47:58 28 4
gpt4 key购买 nike

我正在尝试查找使用 WebClient 的示例。

我的目标是使用 Spring 5 WebClient 使用 https 和自签名证书查询 REST 服务

有什么例子吗?

最佳答案

似乎删除了 Spring 5.1.1 (Spring boot 2.1.0) HttpClientOptions来自 ReactorClientHttpConnector ,所以在创建 ReactorClientHttpConnector 的实例时不能配置选项

现在可行的一个选项是:

val sslContext = SslContextBuilder
.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build()
val httpClient = HttpClient.create().secure { t -> t.sslContext(sslContext) }
val webClient = WebClient.builder().clientConnector(ReactorClientHttpConnector(httpClient)).build()

基本上在创建 HttpClient 时,我们正在配置 insecure sslContext,然后将这个 httpClient 传递给 ReactorClientHttpConnector 使用全局。

另一个选项是配置TcpClient使用不安全的 sslContext 并使用它来创建 HttpClient实例,如下图所示:

val sslContext = SslContextBuilder
.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build()
val tcpClient = TcpClient.create().secure { sslProviderBuilder -> sslProviderBuilder.sslContext(sslContext) }
val httpClient = HttpClient.from(tcpClient)
val webClient = WebClient.builder().clientConnector(ReactorClientHttpConnector(httpClient)).build()

更多信息:

更新:相同代码的 Java 版本

SslContext context = SslContextBuilder.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build();

HttpClient httpClient = HttpClient.create().secure(t -> t.sslContext(context));

WebClient wc = WebClient
.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient)).build();

关于使用 ssl 的 Spring 5 WebClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418523/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com