Заставить Spring RestTemplate игнорировать заголовки типов содержимого ответа - PullRequest
2 голосов
/ 24 октября 2019

Я пытаюсь сделать GET-запрос к серверу, который я не контролирую и который возвращает неверное значение в заголовке Content-Type: «Application / json; charset =».

Когда я пытаюсь выполнить вызов GET, Spring генерирует исключение InvalidMimeTypeException при попытке проанализировать это значение, потому что вполне справедливо ожидает, что после знака = должен существовать фактический набор символов.

restTemplate.getForObject(new URI(DATASOURCE), String.class); // throws InvalidMimeTypeException when attempting to parse response

Возможно ли настроитьRestTemplate, чтобы игнорировать какие заголовки типа содержимого возвращаются в ответе? У меня нет контроля над сервером, который я запрашиваю. (Spring-Boot 2.2.0.RELEASE.)

org.springframework.http.InvalidMediaTypeException: Invalid mime type "Application/json; charset=": 'value' must not be empty
    at org.springframework.http.MediaType.parseMediaType(MediaType.java:574) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:966) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:135) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:92) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:744) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:717) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:336) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]

1 Ответ

0 голосов
/ 24 октября 2019

Вы реализуете пользовательский HttpMessageConverter . Вот пример . Я предполагаю, что вы можете повторно использовать JSON-конвертер и зарегистрировать пользовательский тип контента.

...