【发布时间】:2017-06-07 19:34:33
【问题描述】:
我正在使用 Alamofire 4.0.1 并且 我想为我的请求设置超时。我尝试了question中给出的解决方案:
第一种情况,它会抛出一个NSURLErrorDomain(超时设置正确):
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 10
let sessionManager = Alamofire.SessionManager(configuration: configuration)
sessionManager.request("yourUrl", method: .post, parameters: ["parameterKey": "value"])
.responseJSON {
response in
switch (response.result) {
case .success:
//do json stuff
break
case .failure(let error):
if error._code == NSURLErrorTimedOut {
//timeout here
}
print("\n\nAuth request failed with error:\n \(error)")
break
}
}
第二种情况,不替换超时,仍然设置为60秒。
let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = 10
manager.request("yourUrl", method: .post, parameters: ["parameterKey": "value"])
我在 ios 10.1 中运行
我的代码:(不起作用)
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 10 // seconds
configuration.timeoutIntervalForResource = 10
let alamoFireManager = Alamofire.SessionManager(configuration: configuration)
alamoFireManager.request("my_url", method: .post, parameters: parameters).responseJSON { response in
switch (response.result) {
case .success:
//Success....
break
case .failure(let error):
// failure...
break
}
}
已解决 Alamofire github 线程: Alamofire 4.3.0 setting timeout throws NSURLErrorDomain error #1931
【问题讨论】:
-
您正在设置 Request Time Out ,改为设置 Resource Timeout 。
timeoutIntervalForResource -
好像不行,我用我的实际代码更新了。