반응형
restTemplate.exchange 예외처리
restTemplate.exchange의 경우 400, 500의 응답코드를 받으면 에러로 뱉는다
이 때, BODY를 가져오는 방법은 예외처리를 통해서 가져올 수 있다. (getResponseBodyAsString)
// 예외처리 import
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;
@Autowired
RestTemplate restTemplate;
public Map callRestAPI(Map<String, Object> paramters, String url) throws Exception {
Map responseResult = null;
// 헤더 정보가 있는 경우
String apiKey = "apiKey";
HttpHeaders headers = HeaderUtil.getHeadersWithAPIM();
headers.add(HeaderConstants.APIKEY, apiKey);
HttpEntity<Map<String, Object>> request = new HttpEntity<>(paramters, headers);
URI uri = new URI(url);
// 수정 전 API 호출 코드
// ResponseEntity<Map> responseEntity = restTemplate.exchange(uri, HttpMethod.POST, request, Map.class);
ResponseEntity<Map> responseEntity = null;
// 수정 후 API 예외처리
try{
responseEntity = restTemplate.exchange(uri, HttpMethod.POST, request, Map.class);
}catch(HttpClientErrorException e) {
LOG.info("HttpClientErrorException : " + String.valueOf(e.getResponseBodyAsString()));
throw new Exception(String.valueOf(e.getResponseBodyAsString()));
}catch(HttpServerErrorException e) {
LOG.info("HttpServerErrorException : " + String.valueOf(e.getResponseBodyAsString()));
throw new Exception(String.valueOf(e.getResponseBodyAsString()));
}catch(Exception e) {
LOG.info("Exception : " + String.valueOf(e.getStackTrace()));
throw new Exception(String.valueOf(e.getStackTrace()));
}
if (responseEntity.getBody() != null) {
responseResult = responseEntity.getBody();
}
return responseResult;
}
반응형
'IT 자료' 카테고리의 다른 글
데이터 레이크 한눈에보기 (0) | 2023.03.04 |
---|---|
엑셀로 mysql varchar 50의 길이만큼 자르는 방법 (0) | 2022.06.10 |
MySql 프로시저 DDL 조회 및 백업 (0) | 2021.12.20 |
dbeaver 샘플 데이터 생성 방법 (0) | 2021.12.14 |
SSHD 장단점 (Seagate FireCuda SSHD) (0) | 2021.12.05 |