728x90
반응형
공공데이터 API 통신을 하면서도 몇번 실수를 해서 남기는 블로그
<OpenAPI_ServiceResponse>
<cmmMsgHeader>
<errMsg>SERVICE ERROR</errMsg>
<returnAuthMsg>SERVICE_KEY_IS_NOT_REGISTERED_ERROR</returnAuthMsg>
<returnReasonCode>30</returnReasonCode>
</cmmMsgHeader>
</OpenAPI_ServiceResponse>
이슈는 URL 인코딩 문제임돠.
728x90
공공데이터에서 일반 인증키(Decoding) 값을 다시 인코딩 해서 보내면 됨요.
URI uri = UriComponentsBuilder.fromUriString(apiUrl)
.queryParam("serviceKey", URLEncoder.encode(api_key_dec, "UTF-8")) // 서비스 키
.queryParam("pageNo", pageNo) // 추가 파라미터
.queryParam("numOfRows",numOfRows) // 추가 파라미터
.build(true).toUri();
서비스키를 encoding 하여 빌드
.build(true) 중요!
이미 인코딩이 되어 있어서 다시 인코딩 안해도 된다고 하는 값!
반응형
이후 정상적으로 데이터 수신 가능!!

728x90
반응형
'Dev > JAVA' 카테고리의 다른 글
| PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (0) | 2025.03.12 |
|---|---|
| [JAVA] URL 파라메터 분리(Feat.get) (0) | 2021.02.05 |
| java-jython 오류 - No module named site (2) | 2020.08.26 |
| JAVA 접근 제한자 (0) | 2020.08.02 |
| JAVA - 키보드 입력 (0) | 2020.07.26 |