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 형식이 있다.
이 라이브러리를 이용해 보다 더 편리하게
파싱을 해보고자 한다.
파싱이란?
문자열이나 파일 등의 데이터를 분석하고 필요한 정보를 추출하거나 또는 다른 형식으로 변환하는 과정이다.
기존의 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 설정을 바꿔 해결한 부분에 대해
추후 시간이 나면 더 자세히 알아봐야겠다.
그리고 생각보다 개발일지 작성에 너무 많은 시간을 들였다..
개발과정에서 발생한 이슈를 기록으로 남기는 것은 유의미한 일이다.
다만 이 시간이 개발에 지장이 주어서는 안되니까
더 현명하게 시간을 관리해야겠다고 다짐했다.
직접 문제를 해결해나가면서
통쾌한 쾌감을 느꼈다🔥
앞으로 어떤 이슈를 마주칠지 모르니
어서 빨리빨리 해치워 나가야겠다!!!
'개발일지 > 알러지키미' 카테고리의 다른 글
[개발일지/알러지키미] #5. CollectionView로 Tag List 구현하기 (1) | 2024.03.14 |
---|---|
[개발일지/알러지키미] #4. 절대 다시 잊지못할 .gitignore 처리하기 (0) | 2024.03.13 |
[개발일지/알러지키미] #3. 네이버 지도 API 추가하기 (2) | 2024.03.11 |
[개발일지/알러지키미] #2. 첫 팀 스크럼 (0) | 2024.03.10 |
[개발일지/알러지키미] #0. 개발일지 시작 (2) | 2024.03.08 |