在第一种情况下 ,它会抛出 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设置超时引发NSURLErrorDomain错误#1931
基于@ kamal-thakur响应。
迅捷3 :
var request = URLRequest(url: NSURL.init(string: "YOUR_URL") as! URL) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.timeoutInterval = 10 // 10 secs let postString = "param1=\(var1)¶m2=\(var2)" request.httpBody = postString.data(using: .utf8) Alamofire.request(request).responseJSON { response in // do whatever you want here }