swiftyjson has example ios xcode swift3 http-post alamofire

ios - example - module ''alamofire'' has no member named ''request''



Cancelar una solicitud Alamofire (3)

Alamofire 4 / Swift 3 / Xcode 8

Puede cancelar una sola solicitud de la siguiente manera:

1 - Primero recibe la solicitud:

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 - Entonces, en su vistaDidDisparecer , simplemente llame:

request.cancel()

Puede cancelar todas las solicitudes de la siguiente manera:

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

Estoy enviando una solicitud que se activa en función del temporizador. Pero si presiono el botón Atrás, la solicitud todavía parece estar activa y la respuesta, por turnos, bloquea la aplicación. Por favor sugerir una manera de cancelar la solicitud.

Utilizando Xcode 8.2.1 Swift 3

Aquí está la solicitud de muestra:

Alamofire.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) } }

Incluso intenté invalidar el temporizador en viewDidDisappear pero sin ayuda.

Gracias !!


¿probaste this solución?

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

También agrego un cheque para verificar si esta es la solicitud que deseo cancelar:

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


Qué tal esto:

manager.session.invalidateAndCancel()