接下來將示範如何發送請求,並將資料解包。
let cities = ["臺北市", "新北市", "桃園市", "臺中市", "臺南市", "高雄市", "基隆市", "新竹市", "嘉義市", "苗栗縣", "彰化縣", "南投縣", "雲林縣", "嘉義縣", "屏東縣", "宜蘭縣", "花蓮縣", "台東縣", "澎湖縣", "金門縣", "連江縣"]
var city = "臺北市"
LegitimateURl
函數將請求的 URL 進行編碼處理,解決 URL 中可能存在的特殊字符問題。let requestURL = LegitimateURl(requestURL: "https://opendata.cwa.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization="+yourtoken+"&locationName=" + city)
LegitimateURl
函數:該函數對 URL 進行編碼處理,並返回合法的 URL。func LegitimateURl(requestURL: String) -> URL {
let LegitimateURL = requestURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let url = URL.init(string: LegitimateURL!)
return url!
}
URLSession.shared.dataTask
發送網路請求,並在獲取到資料後使用 JSONDecoder 來將其轉換成 Swift 結構體,方便後續處理。URLSession.shared.dataTask(with: requestURL){[self]
(data,response,error) in
if let error = error {
print(error.localizedDescription)
}
if let response = response {
print(response as! HTTPURLResponse)
}
if let data = data {
let decoder = JSONDecoder()
print(weatherDat ?? 0)
}catch{
print(error.localizedDescription)
}
}
}.resume()
透過這次的實作,我們成功發送了天氣 API 的請求,並將返回的 JSON 資料進行了解包與解析,最後透過 UI 更新來顯示結果。