2017-02-17 9 views
0

Я использую springframework -RestTemplate, , чтобы сделать запрос на получение и преобразовать XML-запрос в java-объект. После операции: RestTemplate.exchange, я получил следующее исключение:Получить HttpMessageNotReadableException Исключение при использовании Spring - RestTemplate

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not instantiate value of type [simple type, class Order] from 

ответ от клиента в XML, и я добавил его к заголовкам:

headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML)); 

Так почему он пытаюсь проанализировать ответ как JSON? и как я могу его решить?

Спасибо!

+0

Вы, вероятно, не имеют MessageConverter, необходимые для XML на объект преобразования – Redlab

+0

Привет, Я попытался добавить: restTemplate.getMessageConverters(). Add (new MappingJackson2XmlHttpMessageConverter()); Но все еще получаю это исключение. Какой messeageConverter я должен использовать? Сказал (а) спасибо –

+0

Добавил (а) Jackson2 в свой classpath? – Redlab

ответ

1

Наиболее распространенная причина заключается в том, что вы получаете некоторый XML, который не соответствует правилам десериализации, определенным в вашей модели (или, возможно, это неправильный XML).

Другая возможная причина - ваш RestTemplate отсутствует конвертер сообщений, способный работать с преобразованием XML. По умолчанию Spring Boot настраивает Jaxb2RootElementHttpMessageConverter, но только если у вас есть JAXB2 в вашем пути к классам, поэтому вы должны проверить, что эта зависимость доступна для вашего проекта.

Вы можете распечатать, какое сообщение конвертеры зарегистрировано в вашем RestTemplate, и какие типы медиа они принимают, с помощью следующего кода:

for (HttpMessageConverter<?> converter : restTemplate.getMessageConverters()) { 
    System.out.println("Converter: " + converter.getClass().getSimpleName() + ", supports: " 
       + converter.getSupportedMediaTypes().toString()); 
} 
+0

Привет Спасибо, я печатать конверторы и Jaxb2RootElementHttpMessageConverter является одним из них. Но я все еще получаю это исключение. Есть способ подсказать весну, какой конвертер использовать? –

+0

Если у вас есть конвертер сообщений, который поддерживает формат XML, можете ли вы проверить, что сервер отправляет правильный заголовок содержимого? что-то вроде 'application/xml', а не' text/plain' или 'text/html'. – aaguilera

Смежные вопросы