[Spring] RestTemplate RestClientException 발생 case 및 해결방안

Jinbro·2022년 7월 2일
0

Spring

목록 보기
5/5

RestClientException 발생 case

RestTemplate 을 활용한 http api 통신 응답코드가
4xx (CLIENT_ERROR), 5xx (SERVER_ERROR) 인 경우 RestClientException 반환

RestClientException 발생 원인

String 형 응답 데이터JSONObject 형 변수에 담으려고 했기 때문에 RuntimeException 발생

샘플 소스

  1. 변수 선언 및 import
import org.springframework.web.client.RestTemplate;
import org.springframework.http.*;
import org.springframework.util.*;

import org.json.simple.JSONObject; // JSON 객체를 추상화한 클래스 (HashMap 클래스 상속)

@Getter
private RestTemplate restTemplate;

2-1. JSONObject 형 변수로 받기

private JSONObject receiveResJsonObjData(String url, HttpHeaders requestHeader, Map requestBody) {
	ResponseEntity<JSONObject> responseEntity = null;
    try {
		responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestHeader, requestBody, JSONObject.class);
    } catch(RestClientException rce) {
    	// RestClientException 발생!
	}
    return responseEntity.getBody();
}

2-2. String 형 변수로 받기

private JSONObject receiveResStrData(String url, HttpHeaders requestHeader, Map requestBody) {
	ResponseEntity<String> responseEntity = null;
    String responseStrBody = "";
    try {
		responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestHeader, requestBody, String.class);
    } catch(RestClientException rce) {}
    if (StringUtil.isNotNull(responseEntity) {
    	responseStrBody = responseEntity.getBody();    
    }
    return JsonUtil.toObject(responseStrBody, JSONObject.class); // ObjectMapper json String to JSONObject
}
  • 스크래핑 응답 데이터의 경우 json String 형태로 전달
  • 송신과 수신의 응답 데이터 형을 동일하게 설정해줘야 정상 수신 가능
profile
자기 개발 기록 저장소

0개의 댓글