我正在使用 OpenWeather Current Weather Data Api,并嘗試發出 url 請求以從 Swift5 中的 api 獲取 json 資料。我需要列印 json 資料。這是我在互聯網上找到的一些代碼,我一直在嘗試使用,但一直沒有作業。
注意:我不想使用任何外部庫。像阿拉莫火。
let url = URL(string: "https://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid={APIKEY}")!
var request = URLRequest(url: url)
let session = URLSession.shared
let task = session.dataTask(with: request) { (data, response, error) in
if let error = error {
print(error)
} else if let data = data {
print(data)
} else {
print("nope")
}
}
task.resume()
uj5u.com熱心網友回復:
Openweathermap API 檔案有點誤導,運算式表示沒有大括號{API key}的 API 密鑰。
使用字串插值插入密鑰
let url = URL(string: "https://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=\(APIKEY)")!
URLRequest不需要并回傳dataTask有效資料或錯誤
let task = URLSession.shared.dataTask(with: url) { (data, _, error) in
if let error = error { print(error); return }
print(String(data: data!, encoding: .utf8)!)
}
task.resume()
要顯示資料,請創建適當的模型并使用解碼資料JSONDecoder
uj5u.com熱心網友回復:
因此,首先您應該知道您已注冊并且已經擁有自己的 API 密鑰。此處未打開鏈接的主要原因是您正在使用免費訂閱并嘗試請求其他訂閱中可用的資料。并且對于將來,如果您只想獲取請求,則不需要執行session.dataTask(with: request),session.dataTask(with: url)就可以了。)
這是您的代碼的更簡單方法。
guard let url = URL(string: "https://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid={APIKEY}") else {return}
let session = URLSession.shared
let task = session.dataTask(with: url) { (data, response, error) in
if let error = error {
print(error)
} else if let data = data {
print(data)
} else {
print("nope")
}
}
task.resume()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/437511.html
上一篇:AndroidStudioFlutter斷點在除錯時被禁用
下一篇:設備方向無回應-顫振
