NSMutableURLRequest不服从我的timeoutInterval

kub*_*ubi 31 nsurlconnection nsurlrequest nsmutableurlrequest

我正在发布一个小图片,所以我希望超时间隔很短.如果图像在几秒钟内没有发送,它可能永远不会发送.由于某种未知的原因NSURLConnection,无论我设置多短,我都永远不会失败timeoutInterval.

// Create the URL request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
                                 initWithURL:[NSURL URLWithString:@"http://www.tumblr.com/api/write"]
                                 cachePolicy:NSURLRequestUseProtocolCachePolicy
                                 timeoutInterval:0.00000001];

/* Populate the request, this part works fine */

[NSURLConnection connectionWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)

我有一个断点,- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error但它永远不会被触发.我的图像继续张贴得很好,尽管很小,它们仍然出现在Tumblr上timeoutInterval.

Fra*_* P. 49

苹果开发论坛讨论这个问题一个线程.显然在iPhone OS上,setter要求timeoutInterval至少240秒(4分钟).仅当postBody不为空时(通常在使用POST请求时)才会发生这种情况.这看起来很疯狂,但显然它确保请求离开系统,即使WWAN(3G)接口可能需要很长时间才能唤醒.240秒似乎相当陡峭,所以他们建议设置一个计时器并在你的计时器触发时取消异步连接.我知道这似乎很愚蠢,但那是我唯一设法让POST请求超时...... :-(

  • 它已在iOS 6中修复.我的测试结果:http://stackoverflow.com/a/12901133/357685 (2认同)

bra*_*ree 5

正如弗朗索瓦上面提到的那样,240秒似乎正如他描述的那样直到iOS 6(包括5.1).现在,此超时似乎按预期采用默认值60秒(如果您没有自己明确设置它),因此如果您有一个POST请求可能依赖于较长时间而无意中,您可能需要更改timeoutInterval手动使用更高的值.我已经能够为POST设置低于和高于60秒的超时,因此60秒标记似乎不代表对此类请求的超时的最小限制.