들어가기 전
HTTP_ERROR
<OpenAPI_ServiceResponse>
<cmmMsgHeader>
<errMsg>SERVICE ERROR</errMsg>
<returnAuthMsg>HTTP_ERROR</returnAuthMsg>
<returnReasonCode>04</returnReasonCode>
</cmmMsgHeader>
</OpenAPI_ServiceResponse>
1번 상황: 같은 URL을 브라우저에서 요청하면 괜찮을 때
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Accept", "*/*;q=0.9");
참고자료
2번 상황: 랜덤하게 오류 발생 (해결중)
- 코드가 아니더라도 공공데이터포털에서 직접 미리보기로 조회해도 오류가남
- 상황
- 2022/7, 2022/11: 휴일이 없는 경우 오류 발생
- 2022/9: 휴일이 있는데도 오류발생
SERVICE_KEY_IS_NOT_REGISTERED_ERROR
<OpenAPI_ServiceResponse>
<cmmMsgHeader>
<errMsg>SERVICE ERROR</errMsg>
<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
<returnReasonCode>30</returnReasonCode>
</cmmMsgHeader>
</OpenAPI_ServiceResponse>
상황: 서비스키를 잘 적어줘도 오류가 남
StringBuilder url = new StringBuilder(holidayUrlRoot);
url.append("?").append("serviceKey").append("=").append(holidayServiceKey);
url.append("&").append("solYear").append("=").append(info.getYear());
url.append("&").append("solMonth").append("=").append(info.getMonth());
url.append("&").append("_type").append("=").append("json");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Accept", "*/*;q=0.9");
HttpEntity<String> httpRequest = new HttpEntity<>(null, headers);
RestTemplate restTemplate = new RestTemplate();
HttpStatus httpStatus = null;
ResponseEntity<GovDataApiResultDTO<GovDataApiHolidayItemDTO>> httpResponse = null;
try {
URI uri = new URI(url.toString()); // service key is not registered 오류 방지
httpResponse = restTemplate.exchange(uri, HttpMethod.GET, httpRequest, new ParameterizedTypeReference<GovDataApiResultDTO<GovDataApiHolidayItemDTO>>(){});
} catch (UnknownContentTypeException e) {
}
// 생략
참고자료