MST

星途 面试题库

面试题:Objective-C中如何实现网络请求的基本重试机制

在Objective-C项目里,假设使用NSURLSession进行网络请求,当请求失败时,简述实现简单重试机制的思路和关键代码步骤。
20.8万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 思路
    • 捕获网络请求失败的情况,通常在NSURLSessionDataTaskcompletionHandler中获取到失败的NSError对象来判断。
    • 设置重试次数,比如初始设置为3次。
    • 每次失败后进行重试,直到重试次数用尽或者请求成功。
  2. 关键代码步骤
    • 定义重试次数变量
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];