代码之家  ›  专栏  ›  技术社区  ›  daredevil1234

Alamofire:SessionManager的超时不根据配置更改

  •  0
  • daredevil1234  · 技术社区  · 6 年前

    下面是我在设置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的截图):

    Netfox screenshot of a request

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kamran    6 年前

    你需要两个都设定 timeoutIntervalForRequest timeoutIntervalForResource 使它按预期工作。这是我现在使用的,

    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)
        }()
    }