URLRequest in Swift5



我正在使用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()

Openweathermap API文档有点误导,表达式{API key}表示API键没有大括号。

使用字符串插值插入密钥

let url = URL(string: "https://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=(APIKEY)")!

不需要URLRequestdataTask返回有效数据或错误

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对数据进行解码

因此,首先您应该知道您已经注册,并且已经拥有自己的API密钥。此处可能出现未打开链接的主要原因是您正在使用免费订阅,并尝试请求其他订阅中可用的数据。对于未来,如果你想只做获取请求,你不需要做会话。dataTask(with:request(会话即可。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()

相关内容

  • 没有找到相关文章

最新更新