Alamofire:基于配置的 SessionManager 的超时没有改变
Posted
技术标签:
【中文标题】Alamofire:基于配置的 SessionManager 的超时没有改变【英文标题】:Alamofire: Timeout not changing for SessionManager based on configuration 【发布时间】: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 为请求配置超时长度的正确方法吗?如果是这样,我该怎么做
【问题讨论】:
【参考方案1】:您需要同时设置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)
()
【讨论】:
你能把我链接到关于这个@Kamran 的文档吗? 我试过了,我所有的网络请求记录工具仍然显示 60 秒(Charles 和 Netfox)超时 我不确定那些网络工具如何记录请求超时。但是,如果您尝试处理超过 60 秒的请求,它将适用于上述配置。对于需要更多时间的请求,您可以通过减少/增加请求超时来进行验证。以上是关于Alamofire:基于配置的 SessionManager 的超时没有改变的主要内容,如果未能解决你的问题,请参考以下文章
为啥不建议在 Alamofire 中修改授权标头的会话配置?