Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSURLRequest超时IOS_Iphone_Ios_Ipad_Nsurlconnection_Nsurlrequest - Fatal编程技术网

Iphone NSURLRequest超时IOS

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:

我需要用UIRequest设置超时15秒或30秒,但它总是使用默认值。有没有办法设置连接的最小超时时间。

在构建时设置timeout interval属性似乎有问题:

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服务调用。有什么想法吗?