【问题标题】:Setting client-side timeout per request with Alamofire [swift]?使用 Alamofire [swift] 设置每个请求的客户端超时?
【发布时间】:2015-01-23 23:44:16
【问题描述】:

我正在尝试为 Alamofire for Swift 的每个请求设置客户端超时。首席架构师告诉我在 NSURLRequest 上设置它,但我完全不知道如何在实践中真正做到这一点。

做过这件事的人可以举个例子吗?谢谢!

【问题讨论】:

    标签: swift timeout client nsurlrequest alamofire


    【解决方案1】:

    我认为这段代码可能有效。

    var alamofireManager : Alamofire.Manager?
    
    func some(){
      let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
      configuration.timeoutIntervalForResource = 2 // seconds
    
      self.alamofireManager = Alamofire.Manager(configuration: configuration)
      self.alamofireManager!.request(.GET, "http://example.com/")
        .response { (request, response, data, error) in
    
        }
    }
    

    【讨论】:

    • 为什么是 configuration.timeoutIntervalForResource 而不是 configuration.timeoutIntervalForRequest ?
    • 设置 timeoutIntervalForRequest 解决了我的超时问题。在此之前,对 API 的长请求会超时。
    【解决方案2】:

    这是您可以使用URLRequest 使用每个请求超时的方法:

    Alamofire.request(URLRequest(url: ..., cachePolicy: ..., timeoutInterval: 10))
        .response(...)
    

    【讨论】:

    • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多