그냥 한국어도 알아서 encoding 해주면 안될까?
.. ㅠ ㅇㅋ ..
안되면 .. 직접 하지 뭐 ..
#업데이트
니카내카 1.2.0 버전의 업데이트 사항 중 하나는 공영주차장 정보를 제공하는 것이다.
그래서 새로운 탭바도 추가하고 .. 뷰/기능도 함께 추가/수정 되었다.
#서버 연결
공영 주차장 정보 역시 서울시 공공데이터 포털의 오픈 API를 통해서 정보를 받는 형식이다.
이 때 만약 정보를 그냥 받아오고 싶다면
http://openapi.seoul.go.kr:8088/{API_KEY}/json/GetParkInfo/1/1000
이렇게 Endpoint에 시작 페이지와 끝 페이지만 추가해서 받아오면 되지만,
한번에 이렇게 총 16000개의 데이터를 받아오는 것은 무리가 있다고 판단되어서 행정구별로 받아오는 것으로 기획했다.
행정구별로 정보를 받고 싶다면 위의 URL에 하나의 Endpoint를 추가하면 되는데,
http://openapi.seoul.go.kr:8088/{API_KEY}/json/GetParkInfo/1/1000/강남
위와 같이 마지막에 행정구를 포함한 URL을 요청하면 된다.
#삽질 시작
근데 .. !! 이상하게 그냥 시작페이지와 끝 페이지를 지정해서 받아오는 것은 잘 되었는데 .. 행정구만 지정해서 URL 요청을 하면 같은 Response 구조임에도 불구하고 데이터를 받아오지 못했다. (nil로 반환)
그래서 !! 아 뭐지 .. ? 아 뭘까 .. ? 아 진짜 뭐지 .. 를 반복하다가 .. 갑자기 스쳐지나간 ..
아 .. 한국어 ..
한국어는 URL 인코딩할 때 추가로 작업이 필요하다 .. 는 것이 떠올랐다 .. ㅋ ..
나름 .. 한 .. 20-30분 정도 .. 안에 생각했으니 .. 그나마 다행 .. 아오 ;;
#삽질 해결
final class ParkingAPIManager {
static let shared = ParkingAPIManager()
private init() { }
static func requestParkingList(startPage: Int, endPage: Int, region: String, completionHandler: @escaping (ParkingList?, APIError?) -> Void) {
let urlString = EndPoint.parkingList.requestURL + "/\(startPage)/\(endPage)/\(region)"
if let safeString = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
let url = URL(string: safeString) {
URLSession.request(endpoint: URLRequest(url: url), completionHandler: completionHandler)
}
}
}
주차장 서버 연결 전체 코드는 위와 같다.
let urlString = EndPoint.parkingList.requestURL + "/\(startPage)/\(endPage)/\(region)"
매개변수로 받은 region을 URL 마지막에 추가하고
if let safeString = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
addingPercentEncoding 메서드를 이용해서 encoding을 하면 제대로 된 형식으로 URL이 요청된다.
그러면 데이터를 잘 받아온다.
Response 데이터에서 위도/경도의 정보를 가지고 지도의 어노테이션을 찍으면 잘 나오게 된다 !!
서버에 요청할 때 한국어가 포함되어 있다면, 무조건! 인코딩에 주의하자.
'iOS > 니카내카' 카테고리의 다른 글
[니카내카] 업데이트 내역 정리(+ 리드미 수정) 및 코드 개선 ing (0) | 2022.10.30 |
---|---|
[니카내카] 업데이트 사항 (version 1.2.2) (2) | 2022.10.27 |
[니카내카] Push Notification을 구현해보자. (3) | 2022.10.11 |
[앱 등록] 앱 심사를 올려봅시다. (0) | 2022.10.06 |
[회고] 앱을 출시해보았습니다? (0) | 2022.10.04 |