В моем весеннем загрузочном приложении я получаю ответ Json в следующем формате от RestTemplate.Тем не менее, когда я тестировал то же самое в URL непосредственно в браузере, я получаю правильный ответ JSON. Это формат hello.gz.Это проблема с кодировкой символов?
BÈ \ u001Bå% \ u0011Áfbâÿ | yÇoþ \ u0019Y¤Zb \ u000E © ¿ùÝzùÝÖ½6 \ u001AÔ ~ ü \ u0019B £ IVY¯u ¥ \ u008B \ u0012 \ u0017f¿Ùü \ u0081¢ \ u0084üÿ \ u0016ûl 8 \ u009B \ u0081MÆμ \ u001F «\ u0006 \ u0085vz \ u001Deúz¬Í¤ × Ae \ u0010 \ u000E" {a¡ £ / É¡Ò \ u0090rHù \ u0096¼ \ u009C ± сс \ u0004 \ u000F ÷bÀ ° N \ u002 \ u0087Ì, 2 £ ChÖ \ u0001 ~ \ \ u000BN? ¨´> 5ÀTvÔ u001CÞC £ u009F> Þ * lÆ £ Ú u008FC \ u00831þªÀÙÙ + uWÎ8ëy \ u0083` \ u0099\ u000B £ ÷ ñU´Æè & + b \ u0018Ô ~ éÆ \ u0083 ° ùFgÉÈ \ uFFFD L;
Я добавил следующие строки в applcation.properties.
spring.http.encoding.charset=UTF-8
# Enable http encoding support.
spring.http.encoding.enabled=true
# Force the encoding to the configured charset on HTTP requests and responses.
spring.http.encoding.force=true
Also I enabled GZip compression in Spring Boot
# Enable response compression
server.compression.enabled=true
# The comma-separated list of mime types that should be compressed
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
# Compress the response only if the response size is at least 1KB
server.compression.min-response-size=1024
Ниже мой код.
@GetMapping(value = { "/", "/hello" }, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> hello() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(null, headers);
RestTemplate restTemplate = new RestTemplate();
//restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
ResponseEntity<String> entity2 = restTemplate.exchange(
"https://XXXXX.8080/hello.gz", HttpMethod.GET, null,
String.class);
String body = entity2.getBody();
System.out.println(body);
return ResponseEntity.ok(body);
}