我正在发布一个小图片,所以我希望超时间隔很短。如果图像在几秒钟内没有发送,它可能永远不会发送。由于某些未知原因,无论我设置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];
我在- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
设置了一个断点,但它永远不会被触发。我的图片继续张贴得很好,尽管很小timeoutInterval
,它们仍然出现在Tumblr上。
答案 0 :(得分:49)
有a thread on Apple dev forums discussing this issue。显然在iPhone OS上,setter要求timeoutInterval至少240秒(4分钟)。仅当postBody不为空时(通常在使用POST请求时)才会发生这种情况。这看起来很疯狂,但显然它确保请求离开系统,即使WWAN(3G)接口可能需要很长时间才能唤醒。 240秒似乎相当陡峭,所以他们建议设置一个计时器并在你的计时器触发时取消异步连接。我知道这看起来很愚蠢,但那是我唯一设法让POST请求超时......: - (
答案 1 :(得分:5)
正如弗朗索瓦上面提到的那样,240秒似乎正如他描述的那样直到iOS 6(包括5.1)。现在,这个超时似乎按预期采用默认值60秒(如果你没有自己明确设置它),所以如果你有一个可能依赖于较长时间的POST请求,你可能需要更改timeoutInterval手动使用更高的值。我已经能够为POST设置低于和高于60秒的超时,因此60秒标记似乎不代表对此类请求的超时的最小限制。
答案 2 :(得分:-2)
此问题已在iOS5中修复,因此您现在不会遇到此问题。并且您的代码将完美运行