7

Cocoa 中的NSURLRequest类(iOS 文档OS X 文档)有一个timeoutInterval属性。文档状态

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

这里的“空闲”是什么意思?据我所知,这在实践中意味着如果我设置 30 秒timeoutInterval并调用发送 的方法NSURLRequest,那么如果 HTTP 响应的主体在发送请求后 30 秒没有返回,则请求时间出去。但这真的是怎么回事吗?

我能想到的几件事可能会触发空闲计时器重置:接收 HTTP 标头或接收部分正文。但现实中哪个(如果有的话)很重要?

4

1 回答 1

1

30 秒内没有收到任何字节是正常定义。您应该能够编写一个非常简单的 HTTP 服务器(到处都有示例项目)并在私有端口上运行它,然后连接到它以向自己证明。

要在您的服务器中模拟超时,只需在您向客户端承诺的字节中添加“40”或一些常量,这样客户端将永远等待最后不会出现的 40 字节额外字节。

于 2014-01-06T02:21:38.173 回答