회고

[개발일지/알러지키미] #1. 공공데이터 기관 API 테스트 및 XML 파싱

쨈미니 2024. 3. 8. 12:17

 

3월 7일 (목)

Iteration 1 中 1일차

드디어 오늘 레포를 생성했다!

깃이그노어 처리를 시작으로 기본 셋팅을 했다.

 

오늘의 목표는

1. Base 설정 및 라이브러리 설치 (30M),

2. api setting (2H),

3. XML parser (3H)

이다! 

 

 

공공데이터포털의 오픈 API를 이용하기 위해

데이터를 가공하고 호출 함수를 만들어

API를 테스트 해보는 데...

생각보다 잘 풀리지 않았다..

 

 

 

 

API 에러 발생

SSL 오류?

API 호출 테스트를 하던 중

이런 오류를 만났다.

 

"An SSL error has occurred and a secure connection to the server connot be made."

SSL 오류가 발생하여 서버에 안전하게 연결할 수 없습니다.

 

 

SSL 오류는 봤기에

바로 구글링 해봤다.

 

SSL(Secure Sockets Layer)오류는

클라이언트와 서버 간의 안전한 연결을 설정하는 과정에서 발생하는 문제다.

SSL은 데이터를 암호화하여 인터넷을 통해 전송될 때 데이터의 안전성을 보장하는 표준 보안 기술이다.

 

도메인 불일치, 인증서 만료 등의 이유로 발생할 수 있다고 한다.

 

 

다시 코드와 생성한 URL을 점검해보았다

 

아무리 봐도

인증키도 유효하고, URL도 올바르고

문제 없는데 대체 뭐가 문제일까?

 

 

 

ATS 설정으로 해결

다시 콘솔창을 살펴보니

NSUnderlyingError=0x600001b90fc0 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9830, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9830, _NSURLErrorNWPathKey=satisfied (Path is satisfied), interface: en0[802.11], uses wifi}}, _kCFStreamErrorCodeKey=-9830})

하나하나 무엇을 의미하는지는 잘 모르겠지만,

NSErrorFailingURLKey으로 구글링을 다시해보니 해결책을 찾았다!

 

오류 원인은 App Transport Security(ATS) 문제였다!

ATS는 iOS 9에서 도입된 보안 기능으로

앱이 인터넷을 통해 데이터를 전송할 때 더 높은 보안 표준을 강제한다고 한다.

 

 

Info.plist에서

APP Transport Security Setting > Allow Arbitrary Loads Yes 

설정한다!

 

 

이제 데이터를 잘 받아오는군!!!!!!!

 

이 방법이 옳은지는 모르겠지만,

우선 당장의 문제는 해결했으니 OK!

 

 

 

 

XML Parsing

불러올 데이터 중에서

 json 형식이 아닌 xml 형식이 있다.

 

 

GitHub - yahoojapan/SwiftyXMLParser: Simple XML Parser implemented in Swift

Simple XML Parser implemented in Swift. Contribute to yahoojapan/SwiftyXMLParser development by creating an account on GitHub.

github.com

이 라이브러리를 이용해 보다 더 편리하게

파싱을 해보고자 한다.

 

파싱이란?

문자열이나 파일 등의 데이터를 분석하고 필요한 정보를 추출하거나 또는 다른 형식으로 변환하는 과정이다.

 

기존의 json형식을 받아오는 데이터와 유사하게

함수를 작성했다.

 

작성한 함수를 다음과 같이 불러올 수 있었다.

 

XML 파싱 성공!!!!!

 

 


 

오늘 한 일

오늘은 공공데이터포털의 오픈 API를 테스트하며,

SSL 오류를 마주했고 해결과정에서 ATS에 대해 알게됐다.

그리고 XML 데이터를 파싱해오는 과정을

처음 경험해봤다.

 

고민되는 지점 

과연 info.plist에서 APP Transport Security Setting 을 변경하는 것만이

해결방법이였을까 생각이 든다.

보안의 문제를 고려하여 Apple에서 제한한 것인데

이의 설정을 바꾸면서 문제가 발생하지 않을까?

 

 

금일 목표 와 공수산정

완료 작업 예상 소요 시간 실제 소요 시간
 Base 설정 및 라이브러리 설치 30M 30M
XML parser 2H 4H
api setting 3H 6H

 

 

 

API 호출 과정에서 생각보다 예상치 못한 상황을 겪었다.

 

특히 XML 파싱 라이브러리 SwiftyXMLParser를 잘 이해하지 못해서

이를 이해하는 과정에서 많은 시간을 소요했다.

 

그리고 API를 설정하면서 발생했던 문제에서

ATS 설정을 바꿔 해결한 부분에 대해

추후 시간이 나면 더 자세히 알아봐야겠다.

 

 

 

그리고 생각보다 개발일지 작성에 너무 많은 시간을 들였다..

개발과정에서 발생한 이슈를 기록으로 남기는 것은 유의미한 일이다.

다만 이 시간이 개발에 지장이 주어서는 안되니까

더 현명하게 시간을 관리해야겠다고 다짐했다.

 

 

직접 문제를 해결해나가면서

통쾌한 쾌감을 느꼈다🔥

 

앞으로 어떤 이슈를 마주칠지 모르니

어서 빨리빨리 해치워 나가야겠다!!!