首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSURLRequest超时IOS

NSURLRequest超时IOS
EN

Stack Overflow用户
提问于 2012-07-30 17:00:35
回答 3查看 25.7K关注 0票数 5

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-30 20:51:25

This answer解释了NSURLRequest对象的timeoutInterval的最小值。如果您需要一个较小的值,那么您可以在所需的时间启动一个NSTimer,并且在timer的触发方法中,您可以取消NSURLConnection对象的连接。如下所示:

代码语言:javascript
运行
复制
//....
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];
}
票数 12
EN

Stack Overflow用户

发布于 2012-07-30 17:09:11

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

代码语言:javascript
运行
复制
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:240.0];

而是在构造之后设置它:

request.timeoutInterval = 70;

另请注意,您可以将间隔设置得多低似乎存在一些限制。有关更多信息,请阅读此帖子:https://devforums.apple.com/message/108087#108087

票数 3
EN

Stack Overflow用户

发布于 2012-07-30 17:27:26

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11718256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档