2016-06-09 156 views
0

調用RestTemplate方法RestTemplate RestClientException無法提取響應:沒有合適的HttpMessageConverter發現

GetStatusRestfulResponse response = restTemplate.getForObject(restRequest.getUrl(), GetStatusRestfulResponse.class,restRequest.getParams()); 

>org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class GetStatusRestfulResponse] and content type [application/json] 
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:108) 
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:550) 
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:511) 
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:248) 

RestTemplate restTemplate = new RestTemplate(); 
    HttpClient httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(setupAuthentication(restRequest)).build(); 
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); 
    requestFactory.setReadTimeout(restRequest.getReqTimeOut()); 
    restTemplate.setRequestFactory(requestFactory); 
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
response = restTemplate.getForObject(restRequest.getUrl(),  GetStatusRestfulResponse.class,restRequest.getParams());  

回答

2

我能解決這個問題,當我得到這個錯誤。罪魁禍首是我使用GetStatusRestfulResponse的java對象。 我採取了以下步驟來調試問題。

  1. 得到spring-web和jackson-databind的源代碼。
  2. 關於在spring和jackson源代碼中調試,意識到問題在於ObjectMapper無法反序列化java對象。
  3. 問題是我的Java對象有內部類。

,以解決與ObjectMapper無法反序列化Java對象的問題,我不得不

  1. 添加默認主Java類和內部類無參數的構造函數。

  2. 使內部類變爲靜態。

這個解決問題:)

相關問題