5

我需要使用 UIRequest 设置超时 15 秒或 30 秒,但它总是采用默认值。有什么方法可以设置连接的最小超时。

4

3 回答 3

12

这个答案timeoutInterval解释了对象的最小值NSURLRequest。如果您需要一个较小的值,那么您可以使用所需的时间启动一个 NSTimer,并在计时器的触发方法中取消您的 NSURLConnection 对象的连接。如:

//....
connection = [[NSURLConnection connectionWithRequest:request delegate:self] retain];
[request release];

[connection start];

if (timer == NULL) {

    timer = [NSTimer scheduledTimerWithTimeInterval: TimeOutSecond
                                             target: self
                                           selector: @selector(cancelURLConnection:)
                                           userInfo: nil 
                                            repeats: NO];
    [timer retain];
}


- (void)cancelURLConnection:(NSTimer *)timerP {
    [connection cancel]; //NSURLConnection object
    NSLog(@"Connection timeout.");
    [timer invalidate];
}
于 2012-07-30T12:51:24.810 回答
3

在构造时设置超时间隔属性似乎有问题:

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:240.0];

而是在构造之后设置它:

request.timeoutInterval = 70;

另请注意,您可以设置多低的间隔似乎有一些限制。阅读这篇文章了解更多信息: https ://devforums.apple.com/message/108087#108087

于 2012-07-30T09:09:10.500 回答
1

我相信 POST 请求的超时最小值为 4 分钟。最安全的方法是NSTimer在超时触发时启动并取消请求。

于 2012-07-30T09:27:25.850 回答