我们正在将CURL HTTP Get请求转换为本机IOS代码。使用CURL,我们可以设置两个不同的超时 - CURLOPT_CONNECTTIMEOUT - 如果无法连接,则在呼叫失败前多长时间,以及CURLOPT_TIMEOUT-如果未检索到所有数据,则在呼叫失败前多长时间。如果连接失败,我们希望它快速返回(10秒),但我们可能在慢速连接上下载大块数据,因此我们需要完成超时(5分钟)。
我们如何使用NSMutableURLRequest设置不同的超时
目前我们正在设置像这样的单一超时
[urlRequest setTimeoutInterval:30.0f]
有没有办法设置两个单独的超时,像CURL一样?我们目前设置的超时时间是多少?连接超时或完成一次。
由于
肖恩
答案 0 :(得分:2)
这是一个非常好的问题。关于它的documentation我不清楚:
如果在连接尝试期间请求保持空闲的时间超过超时间隔,则认为请求已超时。默认超时间隔为60秒。
我确实在Apple开发者论坛中找到了这个helpful post,Apple员工解释说:
timeoutInterval
属性相当于timeoutIntervalForRequest
财产。
他引用了NSURLSessionConfiguration
上的property,NSURLSession
可以附加到timeoutInterval
。如果您设置NSURLRequest
的{{1}},则会将其用作配置上timeoutIntervalForRequest
的值。该属性的文档确实提供了一些见解:
请求超时间隔控制任务的持续时间(以秒为单位) 在放弃之前应等待其他数据到达。计时器 每当新数据到达时,都会重置与此值相关联的值。什么时候 请求计时器达到指定的时间间隔而不接收任何 新数据,它会触发超时。
默认值为
60
。
基于此,似乎这个值实际上都不是!