Неверная кодировка ответа - PullRequest
0 голосов
/ 13 апреля 2020

Я написал метод, который должен возвращать действительное тело в виде строкового типа в utf-8, но после выполнения запроса я получаю ответ в utf-16. Заголовок типа содержимого в почтальоне: application / json. Я искал в стеке поток все возможные способы его решения, но мне не помогло ни одно решение, включая this topi c (. Как я могу изменить его, чтобы получить действительное тело? Спасибо!

Headers, that i've got on response:
{Date=[Mon, 13 Apr 2020 19:13:38 GMT], Content-Type=[application/json; charset=utf-16], Server=[Kestrel], Transfer-Encoding=[chunked]}
    @PostMapping("/updateValues")
    public String getUpdateValuesRequest(@RequestParam(value = "secret") String secret,
                                         @RequestHeader HttpHeaders requestHeaders,
                                         @RequestBody String requestBody){
        return getUpdateValuesResponse(secret, requestHeaders, requestBody);
    }

    public String getUpdateValuesResponse(String secret, HttpHeaders requestHeaders, String requestBody) {
        String updateValuesUrl = "http://myservice.com/chunk/updateValues?secret={secret}";
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
        HttpEntity<String> entity = new HttpEntity<String>(requestBody, requestHeaders);
        ResponseEntity<String> response = restTemplate.exchange(updateValuesUrl, HttpMethod.POST, entity, String.class, secret);
        if (response.getStatusCode() == HttpStatus.OK) {
            logger.info("Request Successful.");
        } else {
            logger.info("Request Failed");
        }
        logger.info(response.getHeaders().toString());
        logger.info(response.getStatusCode().toString());
        logger.info("StatusCodeValue: " + response.getStatusCodeValue());
        logger.info(response.getBody());
        logger.info(response.getClass().toString());
        return response.getBody();
    }

1 Ответ

0 голосов
/ 14 апреля 2020

Проблема была решена установкой setWriteAcceptCharset (false) для stringHttpMessageConverter.

...