我需要使用 UIRequest 设置超时 15 秒或 30 秒,但它总是采用默认值。有什么方法可以设置连接的最小超时。
问问题
25832 次
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 回答