31

我正在发布一个小图像,所以我希望超时间隔很短。如果图像在几秒钟内没有发送,它可能永远不会发送。出于某种未知原因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.

4

3 回答 3

49

Apple 开发者论坛上有一个帖子讨论这个问题。显然在 iPhone OS 上,setter 要求 timeoutInterval 至少为 240 秒(4 分钟)。这只发生在 postBody 不为空时(通常在使用 POST 请求时)。这看起来很疯狂,但显然它的存在是为了确保请求离开系统,即使 WWAN (3G) 接口可能需要几秒钟才能唤醒。240 秒似乎相当陡峭,因此他们建议设置一个计时器并在计时器触发时取消异步连接。我知道这看起来很愚蠢,但这是我唯一设法让 POST 请求超时... :-(

于 2010-05-05T20:59:13.637 回答
5

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

于 2012-09-21T17:13:49.577 回答
-2

此问题已在 iOS5 中修复,因此您现在不会遇到此问题。您的代码将完美运行

于 2012-05-15T02:31:39.523 回答