2017-09-18 45 views
0

我使用的是以下行來獲得使用Spring RestTemplate響應對象:春RestTemplate檢查鑄造響應對象之前響應狀態導致沒有合適的轉換器錯誤

final ResponseEntity<Object> genericErrorResponse = restTemplate 
      .postForEntity("urlvalue.com", request, 
         Object.class); 

我的目標是檢查

if the response is 200: cast to Custom200ResponseModel 

If response is 500: cast to CustomErrorModel 

我收到以下錯誤:

org.springframework.web.client.RestClientException: Could not extract response: 
no suitable HttpMessageConverter found for response type [class java.lang.Object] and content type [text/xml] 
所有

我的MOD ELS對他們@XmlRootElement - 我可以用

response.postForObject(...) 

那麼,什麼是做到這一點的最簡單的方法,直接投?

回答

0

使用Custom200ResponseModel.class在postForEntity方法:

final ResponseEntity<Custom200ResponseModel> genericErrorResponse = restTemplate 
     .postForEntity("urlvalue.com", request, 
        Custom200ResponseModel.class); 

這會爲你的200響應工作。然後,您可以將調用包裝在try catch中,並根據reponse代碼處理RestClientResponseException。如果異常中的響應代碼是500,則可以手動創建並填充CustomErrorModel對象。

0

那麼,你可以得到響應作爲一個字符串,然後使用傑克遜ObjectMapper轉換爲任何你想要的類。