Spring RestTemplate 調用接口亂碼的解決

背景:使用RestTemplate 調用接口返回結果亂碼,但在瀏覽器中或者POSTMAN中調用時返回結果非亂碼;

在解決問題過程中,設置請求各種編碼等均未生效;在仔細觀察http請求時發現

 

原來,數據是經過 GZIP 壓縮過的。默認情況下, RestTemplate 使用的是 JDK 的 HTTP 調用器,並不支持 GZIP 解壓;

解決方法:

使用 Apache HttpClient 作爲 REST 客戶端。Apache HttpClient 內置了對於 GZIP 的支持

@Configuration
public class RestConfiguration {

    @Bean
    public RestTemplate httpClientRestemplate() {
        RestTemplate restTemplate = new RestTemplate(
                new HttpComponentsClientHttpRequestFactory()); // 使用HttpClient,支持GZIP
        restTemplate.getMessageConverters().set(1,
                new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 支持中文編碼
        return restTemplate;
    }

}

業務代碼引入後,正常調用接口即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章