gpt4 book ai didi

ios - 我们是否需要使用 NSURLSessionDataTask 和 NSMutableURLRequest 处理进程的连接超时

转载 作者:行者123 更新时间:2023-11-28 22:02:54 24 4
gpt4 key购买 nike

我正在使用 NSURLSessionDataTaskNSMutableURLRequest。我注意到 NSMutableURLRequest 有一个超时(我相信是 240 秒,这是一个很长的时间)。我还读到 NSURLSession 也有超​​时,但我不确定它到底是什么。我的问题是,如果发生超时我不处理,应用程序会崩溃吗?是否有必要处理超时或操作系统是否处理它并防止应用程序崩溃,并且只是终止请求。如果我们必须处理它,那么最好能得到一些关于我的代码示例的反馈;

     NSURLSession * session = [NSURLSession sharedSession];
NSURL * url = [[NSURL alloc] initWithString:self.url];
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request addValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSString * params =[NSString stringWithFormat:@"email=%@",some email];
[request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];


NSURLSessionDataTask * task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

NSHTTPURLResponse * httpResp = (NSHTTPURLResponse *)response;

NSDictionary * dataDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

//some code missing

}

[task resume];

最佳答案

dataTaskWithRequest:completionHandler: 有一个错误参数。如果发生超时,您将获得一个传递给完成 block 的非零错误对象,您应该以适合您的应用程序的方式处理它。对于可能发生的其他类型的错误,您无论如何都需要处理它。关于此方法的文档非常少,但我认为如果下载失败(由于任何原因,包括超时),您将得到一个 nil 数据对象,因此您应该在尝试对数据执行任何操作之前检查它。

NSURLSessionDataTask * task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

NSHTTPURLResponse * httpResp = (NSHTTPURLResponse *)response;
if (data) {
NSDictionary * dataDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
}else{
NSLog (@"%@", error);
// do whatever to handle the error;
}

关于ios - 我们是否需要使用 NSURLSessionDataTask 和 NSMutableURLRequest 处理进程的连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com