我想为不同的请求设置不同的超时时间。我的请求例程如下:
var request = URLRequest(url: url,
cachePolicy: .reloadIgnoringLocalCacheData,
timeoutInterval: timeout)
// setting headers and body...
sessionTask = localURLSession.dataTask(with: request)
sessionTask?.resume()
其中localURLSession
被定义为公共变量:
public var localURLSession: Foundation.URLSession {
return Foundation.URLSession(configuration: localConfig, delegate: self, delegateQueue: nil)
}
public var localConfig: URLSessionConfiguration {
let res = URLSessionConfiguration.default
res.timeoutIntervalForRequest = Self.ordinaryRequestsTimeout // 20 seconds
return res
}
那我有两个问题:
答案 0 :(得分:1)
很有可能,由于8秒钟的故障,DNS请求超时,因此您根本没有连接。
对于1秒钟的故障,操作系统可能会得出结论,即主机不可访问,并且甚至在网络发生变化或它成功向某处的某个主机发出至少一个请求(负DNS缓存)之前,都不会再次尝试。
也就是说,没有数据包跟踪,我无法确定其中任何一条语句。