ios - Alamofire 超时不起作用

标签 ios swift swift3 alamofire

在我的应用程序中,我使用 Alamofire 进行网络请求并创建了一个类。这是类

class MGNetworking: NSObject{


    private class func getAlamofireManager() -> SessionManager  {
        let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForResource = 180 // seconds
        configuration.timeoutIntervalForRequest = 180 // seconds

        let alamofireManager = Alamofire.SessionManager(configuration: configuration)

        return alamofireManager
    }

    class func requestGETURL(_ strURL: String, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void) {

        getAlamofireManager().request(strURL,method: .get).responseJSON { (responseObject) -> Void in

            if responseObject.result.isSuccess {
                let resJson = JSON(responseObject.result.value!)
                success(resJson)
            }
            if responseObject.result.isFailure {
                let error : Error = responseObject.result.error!
                failure(error)
            }
        }
    }



    class func requestPOSTURL(_ strURL : String, params : [String : AnyObject]?, headers : [String : String]?, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void){

        getAlamofireManager().request(strURL, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in

            if responseObject.result.isSuccess {
                let resJson = JSON(responseObject.result.value!)
                success(resJson)
            }
            if responseObject.result.isFailure {
                let error : Error = responseObject.result.error!
                failure(error)
            }
        }
    }

}

我想更改我的网络请求的超时时间。我创建了方法 getAlamofireManager() 但当我调用此方法时,我的请求在此处取消是错误。

FAILURE: Error Domain=NSURLErrorDomain Code=-999 "cancelled"

当我将 getAlamofireManager() 更改为 Alamofire.request 时,它开始完美运行。

最佳答案

我可以假设问题与 this 有关报告的问题。

所以让我们重写代码:

class MGNetworking: NSObject{

 var manager: SessionManager?

 init() {
    manager = getAlamofireManager()
 }

  private class func getAlamofireManager() -> SessionManager  {
    let configuration = URLSessionConfiguration.default
    configuration.timeoutIntervalForResource = 180 // seconds
    configuration.timeoutIntervalForRequest = 180 // seconds

    let alamofireManager = Alamofire.SessionManager(configuration: configuration)

    return alamofireManager
}
}

所以现在使用 manager 而不是 getAlamofireManager() 来处理请求

关于ios - Alamofire 超时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759693/

相关文章:

ios - 如何支持具有动态类型标识符但具有特定扩展名的文件?

ios - 如何将两个m4a音频文件一起 “Mix/Superimpose”

ios - 在 Swift 4 中显示 PDF 文件

ios - 检测何时快速按下文本字段

swift - Swift 3 中泛型的泛型

iOS:如何确定 UIView 中 CGRect 中最常见的颜色?

iOS:在 TableView 中添加带有过滤器选项的 UISearchbar

swift - 以编程方式初始化 TableView 单元格与 dequeueForReusableIdentifier

ios - 向 UITextField、UILabel、UIView 自定义类添加自定义功能

arrays - 如何将扩展添加到 Swift 数组以有条件地追加?