diff --git a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java b/src/main/java/nlib/restful/service/impl/DataApiRESTful.java index 74b1921e..e3a4ca4d 100644 --- a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java +++ b/src/main/java/nlib/restful/service/impl/DataApiRESTful.java @@ -13,6 +13,8 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.util.MultiValueMap; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.client.RestTemplate; import nlib.restful.service.DataApiInterface; @@ -92,50 +94,51 @@ public class DataApiRESTful implements DataApiInterface { restTemplate.getMessageConverters() .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + HttpStatus statusCode = HttpStatus.OK; + String resultXML = null; + if(method == HttpMethod.GET) { 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) { MultiValueMap parameters = DataApiInterface.makeRequestParamMultiValueMap(reqVO); parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v)); HttpEntity> 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 { String message = "RESTFul API Http Method 설정 오류입니다. : POST, GET 방식만 허용됩니다."; log.error("request > " + message); return DataApiInterface.makeErrorRes("E_ERR_METHOD", message); } - //----------------------------------- - // 요청 처리 - //----------------------------------- -// RestTemplate restTemplate = new RestTemplate(); - //restTemplate.setMessageConverters(msgConverters); - - //ResponseEntity responseEntity = restTemplate.exchange(url, method, requestEntity, String.class); -// ResponseEntity responseEntity = restTemplate.exchange (url, method, requestEntity, String.class); - //ResponseEntity responseEntity = restTemplate.exchange (url, HttpMethod.GET, requestEntity, String.class, parameters); - //ResponseEntity responseEntity = restTemplate.postForEntity( url, requestEntity , String.class ); // working well - //ResponseEntity 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 responseEntity = restTemplate.exchange (builder.toUriString(), method, entity, String.class); - */ - - //----------------------------------- // 응답 처리 //----------------------------------- - HttpStatus statusCode = responseEntity.getStatusCode(); log.debug("RES StatusCode : " + statusCode); - String resultXML = responseEntity.getBody(); log.debug("RES resultXML : " + resultXML); // 응답 자료 객체화