no

How to Create a Spring RestTemplate using HttpClient5

Overview

The RestTemplate serves as the primary Spring class for HTTP access on the client side. It operates on a comparable conceptual level to other templates such as JdbcTemplate, JmsTemplate, and those featured in other Spring Framework and portfolio projects.

Code

  @Bean
  public RestTemplate restTemplate() throws Exception {

    char[] password = "ca_pass_123".toCharArray();

    SSLContext sslContext = SSLContextBuilder.create()
        .loadKeyMaterial(keyStore("classpath:truststore.p12", password), password)
        .loadTrustMaterial(null, new TrustSelfSignedStrategy()).build();

    final SSLConnectionSocketFactory sslSocketFactory = SSLConnectionSocketFactoryBuilder.create()
        .setSslContext(sslContext)
        .build();

    final HttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create()
        .setSSLSocketFactory(sslSocketFactory)
        .setDefaultTlsConfig(TlsConfig.custom()
            .setHandshakeTimeout(Timeout.ofSeconds(30))
            .setSupportedProtocols(TLS.V_1_3)
            .build())
        .build();

    CloseableHttpClient httpClient = HttpClients.custom()
        .setConnectionManager(cm)
        .build();

    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);

    return new RestTemplate(factory);
  }

  private KeyStore keyStore(String file, char[] password) throws Exception {

    KeyStore keyStore = KeyStore.getInstance(KEY_TYPE);
    File key = ResourceUtils.getFile(file);
    try (InputStream in = new FileInputStream(key)) {
      keyStore.load(in, password);
    }

    return keyStore;
  }

Related

spring-rest 4966759933893824350

Post a Comment Default Comments

item