Iphone NSURLRequest超时IOS
我需要用UIRequest设置超时15秒或30秒,但它总是使用默认值。有没有办法设置连接的最小超时时间。在构建时设置timeout interval属性似乎有问题:Iphone NSURLRequest超时IOS,iphone,ios,ipad,nsurlconnection,nsurlrequest,Iphone,Ios,Ipad,Nsurlconnection,Nsurlrequest,我需要用UIRequest设置超时15秒或30秒,但它总是使用默认值。有没有办法设置连接的最小超时时间。在构建时设置timeout interval属性似乎有问题: NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:240.0];
而是在施工后设置:
request.timeoutInterval=70代码>
还要注意的是,设置间隔的下限似乎有一些限制。有关更多信息,请阅读本文:
POST请求有一个最短超时时间,我相信是4分钟。最安全的方法是启动NSTimer
,并在超时触发时取消请求 解释NSURLRequest
对象的timeoutInterval
的最小值。如果需要较小的值,则可以使用所需时间启动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];
}
请张贴您正在使用的代码。我在这个链接中找到了答案,因为我有同样的问题,它对我有效。如果我将超时设置为240以上,则工作正常。我需要一个小于240秒的时间。240似乎是可以接受的最低值(见上面答案中的链接)。但是,有些人通过在构造后设置超时间隔来报告成功(在这种情况下,规则可能不是强制的)。但这在未来可能会改变。也许你应该考虑另一种方法。在慢速蜂窝网络上15秒可能会有问题……在iOS7和iOS8中,您可以设置任何想要的值。它默认为60s@AndrewBennett:我可以在ios 7和ios 8中为超时设置任何范围的值,但不坚持指定的值。假设我将超时时间间隔设置为180秒,则didFailWithError:会在75到220秒之间被触发,有时会比这个时间间隔大,但不会以180秒的时间间隔触发。我正在使用POST方法进行异步web服务调用。有什么想法吗?