【问题标题】:Alamofire: Timeout not changing for SessionManager based on configurationAlamofire:基于配置的 SessionManager 的超时没有改变
【发布时间】:2018-10-16 23:18:17
【问题描述】:

这是我在设置 SessionManager 时尝试更改超时长度的代码:

private var defaultSessionManager: Alamofire.SessionManager = {
    let config = URLSessionConfiguration.default
    config.httpMaximumConnectionsPerHost = 10
    config.timeoutIntervalForRequest = TimeInterval(120)
    return Alamofire.SessionManager(configuration: config)
}()

但是,请求的超时时间总是 60 秒(这里是 iOS 工具 netfox 的截图):

我也尝试将timeoutIntervalForResource 配置为也没有成功。
这不是通过 SessionManager 为请求配置超时长度的正确方法吗?如果是这样,我该怎么做

【问题讨论】:

    标签: swift alamofire


    【解决方案1】:

    您需要同时设置timeoutIntervalForRequesttimeoutIntervalForResource 使其按预期工作。这是我目前使用的,

    extension SessionManager {
    
        /// A `SessionManager` to have a request timeout of 2 minutes.
        static let customDelayed: SessionManager = {
            let secondsInOneMinute = 60
            let numberOfMinutesForTimeout = 2
            let timoutInterval = TimeInterval(numberOfMinutesForTimeout * secondsInOneMinute)
    
            let configuration = URLSessionConfiguration.default
            configuration.timeoutIntervalForRequest = timoutInterval
            configuration.timeoutIntervalForResource = timoutInterval
            return SessionManager(configuration: configuration)
        }()
    }
    

    【讨论】:

    • 你能把我链接到关于这个@Kamran 的文档吗?
    • 我试过了,我所有的网络请求记录工具仍然显示 60 秒(Charles 和 Netfox)超时
    • 我不确定那些网络工具如何记录请求超时。但是,如果您尝试处理超过 60 秒的请求,它将适用于上述配置。对于需要更多时间的请求,您可以通过减少/增加请求超时来进行验证。
    猜你喜欢
    • 2021-02-06
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    相关资源
    最近更新 更多