Exception 처리 보완

This commit is contained in:
KNKIM 2021-10-27 15:58:28 +09:00
parent f0ce096c6b
commit a06c7a6d74

View File

@ -13,6 +13,8 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import nlib.restful.service.DataApiInterface; import nlib.restful.service.DataApiInterface;
@ -92,50 +94,51 @@ public class DataApiRESTful implements DataApiInterface {
restTemplate.getMessageConverters() restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
HttpStatus statusCode = HttpStatus.OK;
String resultXML = null;
if(method == HttpMethod.GET) { if(method == HttpMethod.GET) {
HttpEntity requestEntity = new HttpEntity(headers); HttpEntity requestEntity = new HttpEntity(headers);
responseEntity = restTemplate.exchange (DataApiInterface.makeRequestParamUrl(url, reqVO), method, requestEntity, String.class); try {
responseEntity = restTemplate.exchange (DataApiInterface.makeRequestParamUrl(url, reqVO), method, requestEntity, String.class);
statusCode = responseEntity.getStatusCode();
resultXML = responseEntity.getBody();
} catch(HttpClientErrorException e) {
e.printStackTrace();
resultXML = e.getResponseBodyAsString();
statusCode = e.getStatusCode();
} catch(HttpServerErrorException e) {
e.printStackTrace();
resultXML = e.getResponseBodyAsString();
statusCode = e.getStatusCode();
}
} else if(method == HttpMethod.POST) { } else if(method == HttpMethod.POST) {
MultiValueMap<String, String> parameters = DataApiInterface.makeRequestParamMultiValueMap(reqVO); MultiValueMap<String, String> parameters = DataApiInterface.makeRequestParamMultiValueMap(reqVO);
parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v)); parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v));
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers); HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers);
responseEntity = restTemplate.postForEntity(url, requestEntity , String.class); try {
responseEntity = restTemplate.postForEntity(url, requestEntity , String.class);
statusCode = responseEntity.getStatusCode();
resultXML = responseEntity.getBody();
} catch(HttpClientErrorException e) {
e.printStackTrace();
resultXML = e.getResponseBodyAsString();
statusCode = e.getStatusCode();
} catch(HttpServerErrorException e) {
e.printStackTrace();
resultXML = e.getResponseBodyAsString();
statusCode = e.getStatusCode();
}
} else { } else {
String message = "RESTFul API Http Method 설정 오류입니다. : POST, GET 방식만 허용됩니다."; String message = "RESTFul API Http Method 설정 오류입니다. : POST, GET 방식만 허용됩니다.";
log.error("request > " + message); log.error("request > " + message);
return DataApiInterface.makeErrorRes("E_ERR_METHOD", message); return DataApiInterface.makeErrorRes("E_ERR_METHOD", message);
} }
//-----------------------------------
// 요청 처리
//-----------------------------------
// RestTemplate restTemplate = new RestTemplate();
//restTemplate.setMessageConverters(msgConverters);
//ResponseEntity<String> responseEntity = restTemplate.exchange(url, method, requestEntity, String.class);
// ResponseEntity<String> responseEntity = restTemplate.exchange (url, method, requestEntity, String.class);
//ResponseEntity<String> responseEntity = restTemplate.exchange (url, HttpMethod.GET, requestEntity, String.class, parameters);
//ResponseEntity<String> responseEntity = restTemplate.postForEntity( url, requestEntity , String.class ); // working well
//ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class, parameters); // not working
/*
// GET // OK
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
.queryParam("mngOrgCd", "SU01")
.queryParam("masterId", "UR-408A9832D25C42289D9B1FC81FDA8360")
.queryParam("typeDivCd", "IT_MUSE");
HttpEntity<?> entity = new HttpEntity<>(headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.exchange (builder.toUriString(), method, entity, String.class);
*/
//----------------------------------- //-----------------------------------
// 응답 처리 // 응답 처리
//----------------------------------- //-----------------------------------
HttpStatus statusCode = responseEntity.getStatusCode();
log.debug("RES StatusCode : " + statusCode); log.debug("RES StatusCode : " + statusCode);
String resultXML = responseEntity.getBody();
log.debug("RES resultXML : " + resultXML); log.debug("RES resultXML : " + resultXML);
// 응답 자료 객체화 // 응답 자료 객체화