Alamofire 超时不起作用

Posted

技术标签:

【中文标题】Alamofire 超时不起作用【英文标题】:Alamofire timeout not working 【发布时间】:2017-03-13 08:58:09 【问题描述】:

在我的应用程序中,我使用 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 时,它开始完美运行。

【问题讨论】:

如果你想设置属性,不要忘记配置对象应该是可变的(var)。目前是让。 这个问题你解决了吗? 【参考方案1】:

我可以假设问题与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() 来处理请求

【讨论】:

@pmb 你用的是什么网址? Http或Https 我正在使用 https

以上是关于Alamofire 超时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

导入 Alamofire.swift 不起作用

alamofire 上传图像数组不起作用

Alamofire EmptyResponseCodes 不起作用

Alamofire 中的证书固定不起作用

Alamofire 服务器信任策略对我不起作用

Alamofire 自定义标题不起作用