Alamofire取消网络请求

背景:

         项目里的发布图文的一个需求,在点击完发布按钮后发布过程中,取消当前发布内容。项目使用网络请求是Alamofire框架,在Alamofire的基础上用RXSwift写了一套网络管理工具。基层类Provider。因为每个网络请求都是有一个sessionManage来管理,先创建requestData,然后检查各种param,处理block,token等,再resume开启这个请求,然后这个请求就作为一个task由sessionManager管理,因此可以拿到sessionManager就可以找到对应的task,来取消网络请求。

实现:

注意:要拿到当前网络的sessionManager

    ///取消当前sessionManager下所有的请求

    func cancleAllRequest() -> () {

        manager.session.getAllTasks{ (urlSessionTask)in

            urlSessionTask.forEach({ (task)in

                task.cancel()

            })

        }

    }


    ///取消当前sessionManager下某个请求

    func cancleRequest(path:String) -> () {

        manager.session.getAllTasks{ (urlSessionTask)in

            urlSessionTask.forEach({ (task)in

                iftask.currentRequest?.url?.path== path {

                    task.cancel()

                }

            })

        }

    }

你可能感兴趣的:(Alamofire取消网络请求)