nsurlsession在环多请求(nsurlsession for multiple reques

2019-10-19 11:46发布

我一直在试图下载图像/ TXT但我需要直到URL存在和下载图像/ txt文件做到这一点,所以我一直再次调用同样的方法与当我设置的调试点我看这

如果URL是正确的,比我看不出在调试导航任何队列,因为它不会被再次调用方法。 我提到AFNetworking库相同的,但我想它`在相同的方式工作,我在NSURLSession正在做,对不对?

案例: - 我检查网址是否存在与否,所以如果它单曲存在比加载两个URL(TIME.TXT&image.png),否则调用WebService的(XmlParser的)保持支票网址下列文件。

time.txt+image.png 

or 

tryagain.txt

演出为准存在。

还检查了该AFNetworking问题 ,但它并没有帮助,因为我不想增加操作次数。 我想加载哪个文件存在。

由于操作将完成不管是成功还是在AFNetworking / NSURLSession失败。


-(void)downloading
{
 NSString *imageUrl = [NSString stringWithFormat:@"%@",txtNumber.text];

 NSURLSessionConfiguration *sessionConfig =[NSURLSessionConfiguration defaultSessionConfiguration];

 NSURLSession *session =[NSURLSession sessionWithConfiguration:sessionConfig
                                               delegate:self
                                          delegateQueue:nil];

 NSURLSessionDownloadTask *getImageTask = [session downloadTaskWithURL:[NSURL URLWithString:imageUrl]

                                  completionHandler:^(NSURL *location,
                                                      NSURLResponse *response,
                                                      NSError *error)
                        {
                           UIImage *downloadedImage =[UIImage imageWithData:[NSData dataWithContentsOfURL:location]];

                                      dispatch_async(dispatch_get_main_queue(), ^{
                                          // do stuff with image
                                          if (downloadedImage)
                                          {
                                              carImgView.image = downloadedImage;
                                              result = TRUE;
                                          }
                                          else
                                          {
                                              result = FALSE;
                                              [self tryagain];
                                          }
                                      });
                                  }];

        [getImageTask resume];
}

-(void)tryagain
{
    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
                                           delegate:self
                                      delegateQueue:nil];


    // 1
    getTryAgainTask = [tryAgainSession downloadTaskWithURL:aImgUrl


                              completionHandler:^(NSURL *location,
                                                  NSURLResponse *response,
                                                  NSError *error)
                    {

                        // 2
                        UIImage *downloadedImage =[UIImage imageWithData:[NSData dataWithContentsOfURL:location]];
                        //3
                        dispatch_async(dispatch_get_main_queue(), ^{
                            // do stuff with image
                            if (downloadedImage)
                            {
                                [policyImgWebView loadData:[NSData dataWithContentsOfURL:location] MIMEType:nil textEncodingName:nil baseURL:nil];
                                NSLog(@"YES");
                            }
                            else
                            {
                                NSLog(@"NO");
                                [self performInBackground];
                            }
                        });
                    }];

    // 4
    [getTryAgainTask resume];

}

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

Answer 1:

通过采取一个全球NSURLSession解决



文章来源: nsurlsession for multiple request in loop