【问题标题】:Right Way for changing timeoutIntervalForRequest in Alamofire在 Alamofire 中更改 timeoutIntervalForRequest 的正确方法
【发布时间】:2017-10-11 12:51:59
【问题描述】:

我将 timeoutIntervalForRequest 更改为

let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = 3    
manager.request(url).response {}

但似乎不起作用,有什么建议吗?

【问题讨论】:

    标签: ios alamofire nsurlsession


    【解决方案1】:

    这对我有用:)

    let configuration = URLSessionConfiguration.default
    configuration.timeoutIntervalForRequest = TimeInterval(7)
    configuration.timeoutIntervalForResource = TimeInterval(7)
    let session = URLSession(configuration: configuration)
    
    let task = session.dataTask(with: url) {}
    

    根据 Apple 的文档,对已初始化的 URLSession 配置的更改无效。如果您想要自定义超时,请在您的请求中设置值,或者使用自定义配置创建自定义 URLSession,如document中所述

    【讨论】:

      【解决方案2】:

      你可以这样做:

      lazy var alamofireSession : Alamofire.SessionManager = { [weak self] in
          let configuration = URLSessionConfiguration.default
          configuration.timeoutIntervalForRequest = TimeInterval(30)
          configuration.timeoutIntervalForResource = TimeInterval(30)
          let session = Alamofire.SessionManager(configuration: configuration, delegate: sessionDelegate, serverTrustPolicyManager: nil)   
          return session
      }()
      

      【讨论】:

        【解决方案3】:

        对于 swift3 试试这个

          var alamoManager: SessionManager?
            //Mark -- Alamofire session manager
                        let configuration = URLSessionConfiguration.default
                        configuration.timeoutIntervalForRequest = 3
                        alamoManager = Alamofire.SessionManager(configuration: configuration)
        alamoManager.request(request).responseJSON {
                                response in
        
                    }
        

        这也是一种选择

        Alamofire.SessionManager.default.session.configuration.timeoutIntervalForRequest = 300
        

        【讨论】:

        • opt1 return Error: Optional(Error Domain=NSURLErrorDomain Code=-999 "cancelled" opt2 不起作用(timeoutInterval 似乎还是默认值 60)
        【解决方案4】:

        试试这个

        let request = NSMutableURLRequest(url: NSURL.init(string: "URL")! as URL)
        request.timeoutInterval = 3
            // do additional configuration with your request like pass header etc....
        Alamofire.request(request as! URLRequestConvertible).responseJSON {
                response in
                // do whatever you want here
            }
        

        【讨论】:

        • 它无法在 Swift3 中编译,请使用 Swift3
        • 现在试试...如果存在服务器端验证,您需要设置标题正文。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多