Spring RestTemplate在转换为响应对象之前检查响应状态会导致没有合适的转换器错误

时间:2017-09-18 20:14:27

标签: java spring rest jaxb resttemplate

我使用以下行来使用Spring 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]

我的所有型号都有@XmlRootElement - 我可以直接使用

进行投射
response.postForObject(...)

那么最简单的方法是什么?

2 个答案:

答案 0 :(得分:0)

在postForEntity方法中使用Custom200ResponseModel.class:

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

这将适用于您的200响应。然后,您可以将调用包装在try catch中,并根据响应代码处理RestClientResponseException。如果异常中的响应代码是500,则可以手动创建并填充CustomErrorModel对象。

答案 1 :(得分:0)

好吧,您可以将响应作为String获取,然后使用Jackson ObjectMapper转换为您想要的任何类。