Spring RestTemplate не может обрабатывать знак фунта - PullRequest
0 голосов
/ 25 сентября 2019

Мой API вызывает сторонний веб-сервис, который возвращает строку, как показано ниже:

{
"message": "You have £100 in your account"
}

Когда я регистрирую ответ в своем приложении, ответ регистрируется следующим образом:

{
"message": "You have £100 in your account"
}

Я использовал почтальон, чтобы проверить ответ третьей стороны, и он отправляет правильный ответ.Так что, каким-то образом мой restTemplate не может справиться с этим правильно.Я просмотрел несколько постов и добавил StringHttpMessageConverter с Charset.UTF_8, но это тоже не сработало.`

Обновление:

Ниже приведен фрагмент кода:

public <T, S> ResponseEntity<S> send(HttpMethod method,
                                        HttpHeaders headers,
                                        T requestBody,
                                        URI uri,
                                        Class<S> responseClass)
        throws IOException {

    HttpEntity<T> httpEntity =
            new HttpEntity<>(requestBody, headers);
    restTemplate.getMessageConverters()
            .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));

    log.info("Calling {} {} {}", method.toString(), uri.toString(), headers.toString());
    log.info(mapper.writeValueAsString(requestBody));

    try {
        ResponseEntity<S> responseEntity =
                restTemplate
                        .exchange(uri,
                                method,
                                httpEntity,
                                responseClass);

        return responseEntity;

    } catch (HttpStatusCodeException statusCodeException) {
        log.info("-------------- " + statusCodeException.getResponseBodyAsString());

    }
}

1 Ответ

0 голосов
/ 25 сентября 2019

добавить следующее в конфигурацию вашего приложения

 http:
    encoding:
      force-request: true
      force-response: true
      charset: UTF-8
      enabled: true
...