behan의 개인적인 기술 블로그

Swift) 공공데이터 API serviceKey 에러 (feat. SERVICE_KEY_IS_NOT_REGISTERED_ERROR) 본문

iOS/Swift

Swift) 공공데이터 API serviceKey 에러 (feat. SERVICE_KEY_IS_NOT_REGISTERED_ERROR)

behan 2022. 1. 13. 19:03

공공데이터 api를 사용하는데 

servicekey를 상수에 저장후 parameter로 불러들여왔을 때 serviceKey가 다른 값으로 바뀌어 들어가서 

serviceKey를 정확하게 입력했음에도 불구하고 service key is not registered error 가 발생했다.

원래 serviceKey
실행결과 url에 포함된 serviceKey 부분

그래서 처음엔 원인과 해결방법을 몰라 baseUrl String에 그냥 서비스키까지 같이 입력해서 만들었다.

 

그러던 중 검색을 통해 원인을 알게 되었다.

공공데이터의 serviceKey는 이미 인코딩된 값으로 serviceKey를 제공하는 데

이 값을 사용하게 되면 인코딩이 한번 더 되면서 이상한 값으로 살짝 변경되어 처리 되었다.

 

간단한 해결방법으로는 serviceKey를 한번 디코딩한 다음 그 값을 사용하면 정상적으로 사용 가능하다.

let serviceKey = "발급받은 서비스 키 값"
let serviceKey_decoded = serviceKey.removingPercentEncoding // 이 값을 파라미터에 사용

// or 

let serviceKey = "발급받은 서비스 키 값".removingPercentEncoding

이렇게 하면 정상적으로 serviceKey값이 들어간다.