[공공데이터포털] 개발 시 오류

갓김치·2022년 9월 27일
1

예외

목록 보기
28/28

들어가기 전

HTTP_ERROR

<OpenAPI_ServiceResponse>
	<cmmMsgHeader>
		<errMsg>SERVICE ERROR</errMsg>
		<returnAuthMsg>HTTP_ERROR</returnAuthMsg>
		<returnReasonCode>04</returnReasonCode>
	</cmmMsgHeader>
</OpenAPI_ServiceResponse>

1번 상황: 같은 URL을 브라우저에서 요청하면 괜찮을 때

  • HttpHeaders 에 아래를 추가해준다
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Accept", "*/*;q=0.9"); // HTTP_ERROR 방지

참고자료

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"); // HTTP_ERROR 방지
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) {
    
    }
// 생략
  • URI를 URI 클래스로 만들어서 보내준다

참고자료

profile
갈 길이 멀다

0개의 댓글