Cancel a request Alamofire Cancel a request Alamofire ios ios

Cancel a request Alamofire


Alamofire 4 / Swift 3 / Xcode 8

You can cancel a single request as below:

1 - First get the request:

let request = Alamofire.SessionManager.default.request(path!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: createHeader()).responseJSON { response in    switch response.result {    case .success(let data):        success(data as AnyObject?)    case .failure(let error) :        failure(error as NSError)    }}

2 - Then, in your viewDidDisappear, just call:

request.cancel()


You can cancel all requests as below:

Alamofire.SessionManager.default.session.getTasksWithCompletionHandler { (sessionDataTask, uploadData, downloadData) in    sessionDataTask.forEach { $0.cancel() }    uploadData.forEach { $0.cancel() }    downloadData.forEach { $0.cancel() }}


did you try this solution:

let sessionManager = Alamofire.SessionManager.default sessionManager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in dataTasks.forEach { $0.cancel() } uploadTasks.forEach { $0.cancel() } downloadTasks.forEach { $0.cancel() } }

i also add a check to verify if is this the request that i want to cancel:

dataTasks.forEach            {                if ($0.originalRequest?.url?.absoluteString == url)                {                    $0.cancel()                }            }


SWIFT 5

Alamofire.Session.default.session.getTasksWithCompletionHandler({ dataTasks, uploadTasks, downloadTasks in            dataTasks.forEach { $0.cancel() }            uploadTasks.forEach { $0.cancel() }            downloadTasks.forEach { $0.cancel() }        })