ios - 一个 URLSession 中的不同超时

标签 ios swift nsurlsession

是否可以使用一个URLSession为每个URLRequest设置不同的超时间隔?

我尝试设置

urlRequest.timeoutInterval = 20 * 60

但它已被 URLSession 忽略,并且请求在默认 60 秒后失败并出现超时错误。

只有此设置更改超时:

let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 20 * 60 // 20 min
self.session = URLSession(configuration: configuration)

但是 20 * 60//20 分钟 应用于该 session 中的所有 URLRequest

我想让某些任务等待更长的时间来响应,但其余任务应该在默认 60 秒后默认失败。

有可能吗?或者我应该使用多个 URLSession

PS。在研究过程中我发现了这个错误: https://bugs.swift.org/browse/SR-2680

最佳答案

您可以为每个单独的 URL 配置超时。只是您不能设置大于 URLSession 配置本身的超时。

In some cases, the policies defined in this configuration may be overridden by policies specified by an NSURLRequest object provided for a task. Any policy specified on the request object is respected unless the session’s policy is more restrictive. For example, if the session configuration specifies that cellular networking should not be allowed, the NSURLRequest object cannot request cellular networking.

Docs on URLSessionConfiguration

默认超时为 60 秒。您设置为更大的 1200。所以这是行不通的。增加您的配置,然后您可以对每个 url 的超时进行不同的配置。

关于ios - 一个 URLSession 中的不同超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649471/

相关文章:

ios - 具有后台支持的 iOS 应用程序是否会在应用程序更新时终止?

ios - 我如何在 iOS Swift 中通过聚类解析自定义标记图标

swift - 可选变量如何成为 "powerful solution"?

ios - 流式/分块 HTTP 和 NSURLSession 挂起

iOS:从 NSDate 获取本地化时间

ios - 增加高度约束,拉伸(stretch) "Runtime added subviews"

swift - 在协议(protocol)扩展中访问协议(protocol)的计算属性

swift - 我可以直接在 mustache 模板中使用本地化吗?

ios - iOS中通过处理cookie维护Session信息

ios - 如何在 POST 方法 swift 中将 NSData 作为参数发送