nsurlsession 用于循环中的多个请求

Posted

技术标签:

【中文标题】nsurlsession 用于循环中的多个请求【英文标题】:nsurlsession for multiple request in loop 【发布时间】:2014-04-04 01:39:37 【问题描述】:

我一直在尝试下载图像/txt,但我需要这样做,直到该 url 存在并下载该图像/txt 文件,所以我继续再次调用相同的方法,当我设置调试点时,我看到了这个 。

如果 url 正确,我在调试导航器中看不到任何队列,因为它不再调用方法。我将 AFNetworking 库引用到相同的库,但我想它的工作方式与我在 NSURLSession 中的工作方式相同,对吧?

案例:- 我检查 url 是否存在,所以如果它存在,则加载两个 url(time.txt 和 image.png),否则调用 WebService(XmlParser)并继续检查以下文件的 url。

时间.txt+图片.png 要么 再试一次.txt

显示任何存在的。

还检查了这个AFNetworking Question,但它没有帮助,因为我不想添加操作数。我想加载任何存在的文件。

因为在AFNetworking/NSURLSession中无论成功还是失败都会完成操作。

-(无效)下载 NSString *imageUrl = [NSString stringWithFormat:@"%@",txtNumber.text]; NSURLSessionConfiguration *sessionConfig =[NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session =[NSURLSession sessionWithConfiguration:sessionConfig 代表:自己 委托队列:无]; NSURLSessionDownloadTask *getImageTask = [会话 downloadTaskWithURL:[NSURL URLWithString:imageUrl] 完成处理程序:^(NSURL *位置, NSURLResponse *响应, NSError *错误) UIImage *downloadedImage =[UIImage imageWithData:[NSData dataWithContentsOfURL:location]]; dispatch_async(dispatch_get_main_queue(), ^ // 用图像做事 如果(下载图像) carImgView.image = 下载图像; 结果=真; 别的 结果=假; [自我再试一次]; ); ]; [getImageTask 恢复]; -(无效)再试一次 NSString *strImg = [[NSString stringWithFormat:@"%@",gblPolicyNo] stringByAppendingString:FilePolStatus]; NSString *apiImage = [NSString stringWithFormat:@"http://moviepoint.info/%@/%@",FolderPolStatus,strImg]; NSURL *aImgUrl = [NSURL URLWithString:apiImage]; // 2 NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; // 3 tryAgainSession =[NSURLSession sessionWithConfiguration:sessionConfig 代表:自己 委托队列:无]; // 1 getTryAgainTask = [tryAgainSession downloadTaskWithURL:aImgUrl 完成处理程序:^(NSURL *位置, NSURLResponse *响应, NSError *错误) // 2 UIImage *downloadedImage =[UIImage imageWithData:[NSData dataWithContentsOfURL:location]]; //3 dispatch_async(dispatch_get_main_queue(), ^ // 用图像做事 如果(下载图像) [policyImgWebView loadData:[NSData dataWithContentsOfURL:location] MIMEType:nil textEncodingName:nil baseURL:nil]; NSLog(@"是"); 别的 NSLog(@"否"); [自我执行背景]; ); ]; // 4 [getTryAgainTask 恢复];

如果我做错了,请纠正我并帮助我解决这个问题。

【问题讨论】:

谁能帮我解决这个问题? 【参考方案1】:

通过一个全局 NSURLSession 解决

【讨论】:

以上是关于nsurlsession 用于循环中的多个请求的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSURLSession UploadTask 暂停、恢复、取消上传任务

带有 NSURLSession 的 Swift 中的 HTTP 请求

AFNetworking/NSURLSession耗时长创建100多个任务下载文件

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

NSURLSESSION 后台下载多个

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载