我有一个连接请求使用nsstring中的stringWithContentsOfURL:Encoding:Error:Method工作。如果第一次连接失败,我希望能够重试连接。我本来打算重写函数来使用nsurlrequest的超时功能,但我想我真的想在失败之前使用多次重试。
除了做一些粗糙的事情,比如计数器循环,还有一种在Objective-C中可以接受的方法来重试一个URL重用数据吗?
编辑:
好的,我实现了nsurlconnection以获取我感兴趣的数据,并使用nserrror添加了一些基本的错误处理。这是我最初的尝试:
- (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]);
}
}
}
注意:我还没有实现一个优雅地失败的策略,我现在只是记录错误。
使用此代码(或任何建议的改进),在这里实现重试策略的最佳方法是什么?