2012-05-14 3 views
1

Я понимаю, что что-то проводное продолжает проект, который я пытаюсь создать. Я использую RestTemplate. И я пытаюсь соединиться с сервером и извлекать данные. Все прошло хорошо до тех пор, пока я не решил нарушить свою программу в нескольких классах контроллеров. Посмотри, что я сделал. В каждом из этих новых классов я вставить в каждом из них:RestTemplate «нет подходящего HttpMessageConverter»

RestTemplate restTemplate= new RestTemplate(); 

Для того, чтобы получить данные, я использую аннотацию JAXB только (для связывания данных), и я могу получить все, что я хочу. Но когда я пытаюсь выполнить эту строку кода в новом классе:

ResponseEntity<AClass> result = restTemplate.exchange("url", 
         HttpMethod.GET, entity, AClass.class); 

Я принимаю это исключение: RestClientException «Не удалось извлечь ответ: нет подходящей HttpMessageConverter найдено для типа реакции [AClass] и содержание type [application/xml] "

Если я верну его в предыдущий класс, можно выполнить без проблем. На самом деле я не понимаю, почему. Вероятно, потому, что я использую в новом классе новый RestTemplate. Я пытаюсь объявить разные RestTemplates, а также объявить этот путь: @Autowired, но проблема остается. Должен ли я объявить что-то новое в сервлет диспетчера? Более того, я могу вызвать во многих классах объект restTemplate (RestTemplate restTemplate = new RestTemplate()). Должен ли я объявить его в определенном классе и вызвать его оттуда? Что я должен делать? Я ожидаю ваших предложений.

ответ

0

Как вы ранее создали свой экземпляр restTemplate? Вы должны зарегистрировать MarshallingHttpMessageConverter с экземпляром RestTemplate, иначе он не будет знать, как развязать XML. Что-то вроде этого:

Jaxb2Marshaller jaxbMarshaller = new Jaxb2Marshaller(); 
// Make sure context paths includes AClass's package 
jaxbMarshaller.setContextPaths("com.example.generated"); 
MarshallingHttpMessageConverter converter = new 
    MarshallingHttpMessageConverter(jaxbMarshaller, jaxbMarshaller); 
restTemplate.setMessageConverters(Arrays.<HttpMessageConverter<?>> asList(converter)); 
Смежные вопросы