Hello World

SpringBoot: RestTemplate中文乱码

1. 问题原因

RestTemplate的构造器创建了一个默认字符集为ISO-8859-1的StringHttpMessageConverter对象, 它的默认编码格式为ISO-8859-1, 所以需要修改这个StringHttpMessageConverter对象的编码格式即可

2. 解决方案

    @Bean
    public RestTemplate getRestTemplate() {
        SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
        RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
        List<HttpMessageConverter<?>> list = restTemplate.getMessageConverters();
        for (HttpMessageConverter<?> httpMessageConverter : list) {
            if(httpMessageConverter instanceof StringHttpMessageConverter) {
                ((StringHttpMessageConverter) httpMessageConverter).setDefaultCharset(StandardCharsets.UTF_8);
                break;
            }
        }
        return restTemplate;
    }
posted @ 2023-11-13 09:35  小小忧愁米粒大  阅读(760)  评论(0编辑  收藏  举报
瞅啥瞅,好好看书