NSURLSession sharedSession 默认超时
Posted
技术标签:
【中文标题】NSURLSession sharedSession 默认超时【英文标题】:NSURLSession sharedSession default timeout 【发布时间】:2017-09-06 21:39:30 【问题描述】:有人知道[NSURLSession sharedSession]
的超时配置是什么吗?
我正在做一些调试,这些信息会很有帮助。
编辑
显然我的问题不清楚(!)。我不是在问如何更改超时。我在问默认值是什么。所以这不是重复的。
【问题讨论】:
NSURLSession: How to increase time out for URL requests?的可能重复 根据文档,在默认配置下,NSURLSession
将等待长达 60 秒的新数据到达,并将允许整个操作长达 7 天(假设有新的数据至少每 60 秒)。
@KevinBallard 这个文档在哪里?
[[[NSURLSession sharedSession] configuration] timeoutIntervalForRequest]
应该给你你想要的价值。
@Larme 如果您将其写为答案,我很乐意接受您的评论
【参考方案1】:
URL 会话有两个超时。第一个是接收新数据之间允许的最长时间。这称为timeoutIntervalForRequest
。第二个是允许整个请求花费的最长时间(假设它定期接收新数据)。这称为timeoutIntervalForResource
。
默认情况下,这两个超时都使用NSURLSessionConfiguration
配置,并且可以在NSURLRequest
上被覆盖。
默认timeoutIntervalForRequest
为 60 秒。
默认timeoutIntervalForResource
为 7 天。
【讨论】:
它对我来说不是 woking 并且超时错误出现在将近 30 秒内。 即使我尝试将 timeoutIntervalForRequest 增加到 120,它仍然在控制台中显示 60。 我一定是误解了它的用途,如果对我来说它应该需要 7 天(!)超时..? @DanielSpringer 默认timeoutIntervalForResource
是 7 天,因为后台 URL 会话,其中网络请求可能会被阻止任意时间(例如,如果我处于节电状态或没有网络,后台网络请求不会发生)。对于超时时间长得离谱的前台 URL 会话无关紧要,该应用不太可能连续 7 天连续处于前台。【参考方案2】:
现在有三个超时 URL 会话。详情如下:
timeoutInterval
- 连接超时是建立初始连接的超时时间,即完成 TCP 连接握手。
如果在连接尝试期间请求保持空闲的时间超过超时间隔,则认为该请求已超时。
默认超时间隔为 60 秒。
timeoutIntervalForRequest
- 在放弃之前等待其他数据到达时使用的超时间隔。一旦新数据到达,该值就会被重置。默认值为 60。
timeoutIntervalForResource
- 如果原始请求因超时而失败,后台会话创建的任何上传或下载任务都会自动重试。要配置允许重试或传输上传或下载任务多长时间,请使用 timeoutIntervalForResource 属性。默认值为 7 天。
更多详情请参阅苹果文档:timeoutInterval、timeoutIntervalForRequest 和 timeoutIntervalForResource
【讨论】:
只加timeoutInterval
是URLRequest
,其余两个是URLSession
以上是关于NSURLSession sharedSession 默认超时的主要内容,如果未能解决你的问题,请参考以下文章