Set timeout in Alamofire
For new versions of AF, see https://stackoverflow.com/a/61192412/308315
For old versions, please try this:
let request = NSMutableURLRequest(url: URL(string: "")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.timeoutInterval = 10 // 10 secs
let values = ["key": "value"]
request.httpBody = try! JSONSerialization.data(withJSONObject: values, options: [])
Alamofire.request(request as! URLRequestConvertible).responseJSON {
response in
// do whatever you want here
}
I have same problem too, I think I found the solution. Try to declare SessionManager?
or in your case alamofireManager
in class, outside the function
class ViewController: UIViewController {
var alamoFireManager : SessionManager? // this line
func alamofire(){
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 10
configuration.timeoutIntervalForResource = 10
alamoFireManager = Alamofire.SessionManager(configuration: configuration) // not in this line
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 5.1 includes a new way to modify the request with a closure in the initializer:
AF.request(url) { $0.timeoutInterval = 60 }
.validate()
.response { _ in // handle response here }