2012-05-14 79 views
1

我意識到,有線連接與我嘗試創建的項目繼續。我正在使用RestTemplate。我試圖連接服務器並檢索數據。一切都很順利,直到我決定在一個以上的控制器類中打破我的程序。看看我做了什麼。在這些新類我插入在他們每個人的每一個:RestTemplate「沒有合適的HttpMessageConverter」

RestTemplate restTemplate= new RestTemplate(); 

爲了獲取數據我只使用了JAXB註釋(數據綁定),我可以取回我想做的事情。但是,當我試圖在新的類來執行這行代碼:

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

我採取這一例外:RestClientException「無法提取響應:沒有合適的HttpMessageConverter發現響應類型[ACLASS]和內容鍵入[application/xml]「

如果我把它放回前一課,可以執行沒有問題。真的,我不明白爲什麼。可能是因爲我在新類中使用了一個新的RestTemplate.I嘗試聲明不同的RestTemplates,並聲明這種方式:@Autowired,但問題仍然存在。我應該在調度程序servlet中聲明新的東西嗎?此外,我可以在很多類中調用對象restTemplate(RestTemplate restTemplate = new RestTemplate())。我應該在特定的班級申報並從那裏打電話嗎?我該怎麼做?我期待你的提議。

回答

0

您以前是如何設置您的restTemplate實例的?您必須使用RestTemplate實例註冊MarshallingHttpMessageConverter,否則它將不知道如何解組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)); 
相關問題