nsurlconnection超时的问题

问题描述:

我有NSURLConnection的一个奇怪的问题。我已经将连接时间设置为20秒。nsurlconnection超时的问题

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20.0]; 
NSURLConnection *con= [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

我正在实现NSURLConnection的委托方法。

现在,当我运行该应用程序时,连接在20秒后没有超时,但在2-3分钟后它给出了'没有互联网连接'的错误。是否应该在20秒后发出超时错误?

为timeoutInterval的讨论说,它开始(设定为0),当负载活动的过程中发生:

的超时间隔指定在空闲 间隔获分配到在一个请求中的 极限加载过程。 “空闲 时间间隔”定义为自装载过程中的请求发生装载活动的最后一个实例 以来所经过的时间段。因此,当负载活动的一个实例发生时(例如,从网络接收一个请求的字节),请求的空闲间隔为0.如果空闲时间间隔 变为大于或等于超时间隔,请求 被视为超时。这个超时间隔以秒为单位测量 。

没有互联网连接是一个错误。因此,如果获得连接但可能需要更多时间才能在20秒(设定时间)内实际发生超时...

+4

可能是。但是[这里](https://devforums.apple.com/thread/25282)中的讨论也表明,如果连接请求具有主体,那么timeoutInterval对于iphone至少为240秒。所以无论如何,除非我在20秒后取消连接,否则至少需要240秒。 – bala 2010-08-25 09:06:21

+0

user430338的发现很重要,如果您发送同步(阻止)请求并且需要它更快超时... – Ying 2011-03-01 23:03:44