我有一个使用来自 NSString 的 stringWithContentsOfURL:encoding:error: 方法的连接请求。如果第一次失败,我希望能够重试连接。我打算重写该函数以使用 NSURLRequest 的超时功能,但我想我真的很想在失败之前使用多次重试。
除了做一些粗略的事情,比如计数器循环之外,Objective-C 中是否有一种可接受的方式来重试 URL reuest 以获取数据?
编辑:好的,我实现了 NSURLConnection 来获取我感兴趣的数据,并使用 NSError 添加了一些基本的错误处理。这是我最初的尝试:
- (id)initWithURL:(NSURL*)aURL {
NSError *error = nil;
NSURLResponse *response = nil;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:aURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *xmlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (response == nil) {
if (error) {
NSLog(@"Error has occurred: %@", [error localizedDescription]);
}
}
}
注意:我还没有实现优雅失败的策略,我现在只是记录错误。
使用此代码(或任何建议的改进),在这里实施重试策略的最佳方法是什么?