NSDictionary dictionaryWithContentsOfURL超时?

时间:2011-08-04 09:10:25

标签: cocoa httpwebrequest timeout nsurl

我写了一个简单的代码来从Web服务器获取字符串值,现在我想设置超时,比如,getData 10秒然后如果服务器在10秒后没有响应取消获取数据并执行“noConnect”。我怎么能这样做?

-(void)getData {
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat:
@"http://exaple.com/example.plist"]];
NSDictionary *data = [NSDictionary dictionaryWithContentsOfURL:url];
NSString *aKey  = [chamUpdateData objectForKey:@"count"];
}
-(void)noConnect{}

2 个答案:

答案 0 :(得分:0)

您可以将dictionaryWith...中的NSTimer包裹起来,以便异步执行;然后开始NSOperation,然后它会触发,你可以检查running的状态;如果它仍然是{{1}},那么你取消它。

请记住,一旦发送网络请求,我就无法知道实际停止网络请求。因此,当连接花费的时间超过时,您只需要超时来管理案例。如果响应在1分钟内到达,您将忽略该数据。

答案 1 :(得分:0)

创建一个10秒的NSTimer并调用该函数来检查服务器是否没有响应,并相应地停止获取数据。

  

NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:10.0   target:self selector:@selector(stopGettingData)userInfo:nil   重复:NO];

如果应用程序位于cocos2d中,则无法使用NSTimer。而是以1秒的间隔安排一个函数,只需递增该函数中的计数并检查它是否为10,如果count为10,则调用stopGettingData函数。