#java #spring #spring-boot #ssl #spring-webflux
Вопрос:
В springboot 2.1 вы можете отключить проверку ssl webclient с помощью приведенного ниже фрагмента, но как это сделать в springboot 2.0? Где у ReactorClientHttpConnector нет этого конструктора, который добавляет HttpClient, вместо этого у него есть конструктор ниже
public ReactorClientHttpConnector(Consumerlt;? super HttpClientOptions.Buildergt; clientOptions) { this.httpClient = HttpClient.create(clientOptions); }
Приведенный ниже фрагмент работает на 2.1, но не на 2.0
SslContext context = SslContextBuilder.forClient() .trustManager(InsecureTrustManagerFactory.INSTANCE) .build(); HttpClient httpClient = HttpClient.create().secure(t -gt; t.sslContext(context)); WebClient.builder() .clientConnector(new ReactorClientHttpConnector(httpClient))
Ответ №1:
API немного эволюционировал между 2.0 и 2.1. Ниже приведен пример, который работает с 2.0.4:
package com.example.webclienttest; import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.util.InsecureTrustManagerFactory; import javax.net.ssl.SSLException; import org.junit.Test; import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.web.reactive.function.client.WebClient; public class WebClientTest { @Test public void test() throws SSLException { SslContext context = SslContextBuilder.forClient() .trustManager(InsecureTrustManagerFactory.INSTANCE).build(); WebClient webClient = WebClient.builder() .clientConnector(new ReactorClientHttpConnector(builder -gt; builder.sslContext(context))) .build(); String stringMono = webClient.get().uri("https://expired.badssl.com/").retrieve() .bodyToMono(String.class).block(); System.out.println(stringMono); } }
Комментарии:
1. Спасибо, Андреас, это спасло мне жизнь