我有以下代碼用于從外部 API 請求資料:
var request = URLRequest(url: myURL!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in
if error != nil {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
}
})
dataTask.resume()
timeoutInterval設定10.0為。但是,如果請求/會話超時,或者請求/會話完成多長時間,我如何獲取資訊?然后我將使用該資訊來確定我應該呼叫哪個函式。
任何幫助深表感謝!
uj5u.com熱心網友回復:
如果錯誤不是nil,則將錯誤轉換為URLError并檢查code是否.timeout。這是代碼。
var request = URLRequest(url: myURL!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
if let error = error as? URLError {
if error.code == .timedOut {
print("Timeout error")
}
}
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
}
})
dataTask.resume()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/458928.html
上一篇:如何在JSX中宣告一個變數?
