- 思路:
- 捕获网络请求失败的情况,通常在
NSURLSessionDataTask
的completionHandler
中获取到失败的NSError
对象来判断。
- 设置重试次数,比如初始设置为3次。
- 每次失败后进行重试,直到重试次数用尽或者请求成功。
- 关键代码步骤:
NSInteger retryCount = 3;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:nil delegateQueue:nil];
NSURL *url = [NSURL URLWithString:@"yourURL"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error) {
if (retryCount > 0) {
retryCount--;
// 重新发起请求
NSURLSessionDataTask *newTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// 处理新请求结果
}];
[newTask resume];
} else {
// 重试次数用尽,处理最终失败情况
}
} else {
// 请求成功,处理成功结果
}
}];
[task resume];