swift - 尝试启动 dataTask 时出现 URLError(_nsError: The operation could not be completed) 错误
问题描述
我有一个 Vapor 服务器应用程序(托管在 Heroku 上),它通过 URLSession dataTask 连接到外部 API 服务。
到目前为止,它一直运行良好(并且在我的 Mac 上本地运行时仍然运行良好),但是自从上次服务器重新启动后,dataTask 每次都会抛出以下错误:URLError(_nsError: The operation could not be completed)
.
过去我听说 Linux 上的 Swift 存在 URLSession 问题,但大部分都已解决。有没有人对此有任何解决方案?谢谢!
代码:
func foo(task: RepeatedTask) {
// get request to ZTM API
guard let client = try? app.client() else {
return
}
var urlComponents = URLComponents(string: Globals.API_URL)!
urlComponents.queryItems = [
URLQueryItem(name: "resource_id", value: Globals.RESOURCE_ID),
URLQueryItem(name: "apikey", value: Globals.API_KEY),
URLQueryItem(name: "type", value: "1")]
let url = urlComponents.url
let response = client.get(url!)
let tempModel = response.flatMap(to: Model.self) { response -> EventLoopFuture<Model> in
return try response.content.decode(Model.self)
}.map(to: Model.self) { tempModel -> Model in
tempModel.busArray.forEach {
$0.vehicleID = $0.Lines! + $0.Brigade!
$0.angle = 0
}
if Globals.myModel.busArray.isEmpty {
Globals.myModel.busArray = tempModel.busArray
} else {
// add & remove buses
Globals.myModel.busArray.updateVehicleArray(using: tempModel.busArray)
// update coordinates + angle
Globals.myModel.busArray.updateCoordinates(using: tempModel.busArray)
}
return tempModel
}
}
产生的网址urlComponents
是https://api.um.warszawa.pl/api/action/busestrams_get/?resource_id=f2e5503e-927d-4ad3-9500-4ab9e55deb59&apikey=a86c68be-0117-4a88-838c-bcc2f6ba85f4&type=1
解决方案
推荐阅读
- angular - rxjs 和角度路由器事件:首次发出后将布尔值设置为初始值
- c++ - 跨平台文件名和 wxString::ToStdString()
- unity3d - unity OnTriggerEnter 多次调用问题
- android - 无法执行身份验证 MiFare Ultralight C
- ms-access - MS Access 查询条件基于另一个查询中的特定字段
- raspberry-pi - 将整数转换为二进制以进行 SPI 传输
- android-studio - AndroidStudio 运行 Recorded Espresso 测试失败
- angular - RXJS:按队列请求 - ForkJoin
- r - 结合 ggplots 会为每个绘图显示完全相同的绘图图形
- python - python,torch,GAN,将张量解码为值