Отключить проверку ssl webclient springboot 2.0.4

#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. Спасибо, Андреас, это спасло мне жизнь