连接并完成NSMutableURLRequest的超时

时间:2017-03-17 17:20:22

标签: ios curl nsmutableurlrequest

我们正在将CURL HTTP Get请求转换为本机IOS代码。使用CURL,我们可以设置两个不同的超时 - CURLOPT_CONNECTTIMEOUT - 如果无法连接,则在呼叫失败前多长时间,以及CURLOPT_TIMEOUT-如果未检索到所有数据,则在呼叫失败前多长时间。如果连接失败,我们希望它快速返回(10秒),但我们可能在慢速连接上下载大块数据,因此我们需要完成超时(5分钟)。

我们如何使用NSMutableURLRequest设置不同的超时

目前我们正在设置像这样的单一超时

[urlRequest setTimeoutInterval:30.0f]

有没有办法设置两个单独的超时,像CURL一样?我们目前设置的超时时间是多少?连接超时或完成一次。

由于

肖恩

1 个答案:

答案 0 :(得分:2)

这是一个非常好的问题。关于它的documentation我不清楚:

  

如果在连接尝试期间请求保持空闲的时间超过超时间隔,则认为请求已超时。默认超时间隔为60秒。

我确实在Apple开发者论坛中找到了这个helpful post,Apple员工解释说:

  

timeoutInterval属性相当于   timeoutIntervalForRequest财产。

他引用了NSURLSessionConfiguration上的propertyNSURLSession可以附加到timeoutInterval。如果您设置NSURLRequest的{​​{1}},则会将其用作配置上timeoutIntervalForRequest的值。该属性的文档确实提供了一些见解:

  

请求超时间隔控制任务的持续时间(以秒为单位)   在放弃之前应等待其他数据到达。计时器   每当新数据到达时,都会重置与此值相关联的值。什么时候   请求计时器达到指定的时间间隔而不接收任何   新数据,它会触发超时。

     

默认值为60

基于此,似乎这个值实际上都不是!