package com.ruoyi.cai.util; import org.apache.http.impl.client.CloseableHttpClient; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.client.RestTemplate; import java.nio.charset.StandardCharsets; import java.util.List; public class RestTemplateUtil { public static RestTemplate restTemplate; public static RestTemplate NO_SSL_REST_TEMPLATE; static { SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(3000); requestFactory.setReadTimeout(3000); restTemplate = new RestTemplate(new BufferingClientHttpRequestFactory(requestFactory)); List> messageConverters = restTemplate.getMessageConverters(); //添加转换器 for (HttpMessageConverter messageConverter : messageConverters) { if (messageConverter instanceof StringHttpMessageConverter) { StringHttpMessageConverter converter = (StringHttpMessageConverter) messageConverter; converter.setDefaultCharset(StandardCharsets.UTF_8); } } CloseableHttpClient httpClient = null; try { httpClient = CustomHttpClient.createClient(); HttpComponentsClientHttpRequestFactory requestFactoryNoSSL = new HttpComponentsClientHttpRequestFactory(httpClient); requestFactoryNoSSL.setConnectTimeout(3000); requestFactoryNoSSL.setReadTimeout(3000); NO_SSL_REST_TEMPLATE = new RestTemplate(requestFactoryNoSSL); List> messageConvertersNoSSL = restTemplate.getMessageConverters(); for (HttpMessageConverter messageConverter : messageConvertersNoSSL) { if (messageConverter instanceof StringHttpMessageConverter) { StringHttpMessageConverter converter = (StringHttpMessageConverter) messageConverter; converter.setDefaultCharset(StandardCharsets.UTF_8); } } } catch (Exception e) { throw new RuntimeException(e); } } public static RestTemplate getRest(){ return restTemplate; } public static RestTemplate getNoSSLRest(){ return NO_SSL_REST_TEMPLATE; } }