如何从dataTask获取超时信息



我有以下代码从外部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()

设置timeoutInterval10.0。但是,如果请求/会话超时,或者请求/会话完成需要多长时间,我如何获得关于的信息?然后,我将使用该信息来确定应该调用哪个函数。

任何帮助都非常感谢!

如果错误不是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()

相关内容

最新更新