restTemplate中文乱码问题


    @Value("${remote.maxTotalConnect:400}")
    private int maxTotalConnect;
    /* 单个主机的最大连接数 */
    @Value("${remote.maxConnectPerRoute:200}")
    private int maxConnectPerRoute;
    /* 连接超时默认2s */
    @Value("${remote.connectTimeout:10000}")
    private int connectTimeout;
    /* 读取超时默认30s */
    @Value("${remote.readTimeout:180000}")
    private int readTimeout;

 @Bean
    public RestTemplate restTemplate() {
    
    
        RestTemplate restTemplate = new RestTemplate(this.createFactory());
        List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
        // 重新设置StringHttpMessageConverter字符集为UTF-8,解决中文乱码问题
        HttpMessageConverter<?> converterTarget = null;
        for (HttpMessageConverter<?> item : converterList) {
    
    
            if (StringHttpMessageConverter.class == item.getClass()) {
    
    
                converterTarget = item;
                break;
            }
        }
        if (null != converterTarget) {
    
    
            converterList.remove(converterTarget);
        }
        converterList.add(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
        //加入FastJson转换器
        converterList.add(new FastJsonHttpMessageConverter());
        return restTemplate;
    }

    private ClientHttpRequestFactory createFactory() {
    
    
        if (this.maxTotalConnect <= 0) {
    
    
            SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
            factory.setConnectTimeout(this.connectTimeout);
            factory.setReadTimeout(this.readTimeout);
            return factory;
        }
        HttpClient httpClient = HttpClientBuilder.create().setMaxConnTotal(this.maxTotalConnect)
                .setMaxConnPerRoute(this.maxConnectPerRoute).build();
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(
                httpClient);
        factory.setConnectTimeout(this.connectTimeout);
        factory.setReadTimeout(this.readTimeout);
        return factory;
    }

猜你喜欢

转载自blog.csdn.net/weixin_43861630/article/details/131064870