2017-09-18 7 views
0
나는 봄 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] 

내 모든 모드 :

나는 다음과 같은 오류가 발생하고 ELS 그들에 @XmlRootElement이 - 그리고 난

response.postForObject(...) 

그래서이 작업을 수행하는 가장 쉬운 방법은 무엇입니까를 사용하여 직접 캐스팅 할 수 있습니까? postForEntity 방법에

답변

0

는 사용 Custom200ResponseModel.class :

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

이것은 당신의 200 응답을 작동합니다. 그런 다음 try catch에 호출을 래핑하고 응답 코드를 기반으로 RestClientResponseException을 처리 할 수 ​​있습니다. 예외의 응답 코드가 500 인 경우 CustomErrorModel 객체를 수동으로 만들고 채울 수 있습니다.

0

음, 응답을 String으로 가져온 다음 Jackson ObjectMapper를 사용하여 원하는 클래스로 변환 할 수 있습니다.