У меня есть серверное приложение Vapor (размещенное на Heroku), которое подключается к внешней службе API через dataSask URLSession.
До сих пор он работал отлично (и все еще прекрасно работает при локальном запуске на моем Mac), но с момента последнего перезапуска сервера dataTask каждый раз выдает следующую ошибку: URLError(_nsError: The operation could not be completed)
.
Я слышал, что у Swift в Linux были проблемы с 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
}
}
URL, полученный из 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