nsurlsession для множественного запроса в цикле

Я пытался загрузить image/txt, но мне нужно делать это до тех пор, пока не появится этот URL, и загрузить этот файл image/txt, поэтому я продолжаю вызывать тот же метод снова, и когда я устанавливаю точку отладки, я вижу это Очереди потоков,

Если URL-адрес правильный, я не вижу очереди в отладочном навигаторе, потому что он не вызывает метод снова. я отослал библиотеку AFNetworking к тому же, но я думаю, что она работает так же, как я делаю в NSURLSession, верно?

Случай: - Я проверяю URL, если он существует или нет, поэтому, если он существует, загрузите оба URL (time.txt & image.png), в противном случае вызовите WebService(XmlParser) и продолжайте проверять URL для следующих файлов.

time.txt + image.png 

или же 

tryagain.txt

показать, что есть.

Также проверил этот вопрос AFNetworking, но это не помогло, потому что я не хочу добавлять количество операций. Я хочу загрузить файл в зависимости от того, что существует.

Потому что операции будут завершены независимо от того, будет ли это успешно или нет в AFNetworking / NSURLSession.


- (недействительно) загрузка {
 NSString *imageUrl = [NSString stringWithFormat:@"%@",txtNumber.text];

 NSURLSessionConfiguration *sessionConfig =[NSURLSessionConfiguration defaultSessionConfiguration];

 NSURLSession *session =[NSURLSession sessionWithConfiguration: делегат sessionConfig: собственный делегат Queue:nil];

 NSURLSessionDownloadTask *getImageTask = [session downloadTaskWithURL:[NSURL URLWithString:imageUrl] завершение Handler:^(NSURL * местоположение,
                                                      NSURLResponse * ответ,
                                                      NSError * ошибка)
                        {
                           UIImage *loadedImage =[UIImage imageWithData:[местоположение]: [данные] NSD]: dispatch_async(dispatch_get_main_queue(), ^{
                                          // делать вещи с изображением if (downloadImage)
                                          {
                                              carImgView.image = downloadImage;
                                              result = TRUE;
                                          }
                                          else
                                          {
                                              result = FALSE;
                                              [self tryagain];
                                          }
                                      });
                                  }];

        [getImageTask резюме]; }
- (недействительными) 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
                                           Делегат: самостоятельно
                                      delegateQueue: ноль];


    // 1
    getTryAgainTask = [tryAgainSession downloadTaskWithURL:aImgUrl


                              завершение Handler:^(NSURL * местоположение,
                                                  NSURLResponse * ответ,
                                                  Ошибка NSError *)
                    {

                        // 2
                        UIImage *loadedImage =[UIImage imageWithData:[NSData dataWithContentsOfURL:location]];
                        //3
                        dispatch_async(dispatch_get_main_queue(), ^{
                            // делать вещи с изображением
                            if (downloadImage)
                            {
                                [policyImgWebView loadData:[NSData dataWithContentsOfURL:location] MIMEType:nil textEncodingName:nil baseURL:nil];
                                NSLog(@"ДА");
                            }
                            еще
                            {
                                NSLog(@"NO");
                                [self executeInBackground];
                            }
                        });
                    }];

    // 4
    [getTryAgainTask резюме];

}

Пожалуйста, исправьте меня, если я делаю неправильно, и помогите мне решить эту проблему.

1 ответ

Решение

Решено путем проведения одной глобальной сессии NSURLS

Другие вопросы по тегам