Запрос ASIHttpRequest:didReceiveBytes: не работает должным образом

Я уверен, что этому есть очень простое объяснение, но я рву волосы над этим вопросом.

    -(void)addRequestWithUrl:(NSURL *)url savePath:(NSString *)path
    {
      ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
      request.userInfo = [[NSMutableDictionary alloc] initWithObjectsAndKeys:path, @"savePath", nil];
      networkQueue.showAccurateProgress = YES;
      [self.networkQueue addOperation:request];
      [self.networkQueue setDownloadProgressDelegate:self];
    }

    -(void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes
    {
       DLog(@"bytes: %llu", bytes);
    }

didReceiveBytes никогда не вызывается. Если я устанавливаю делегат прогресса загрузки для каждого запроса вместо очереди, вызывается метод didReceiveBytes, но только после того, как каждый запрос полностью завершен, и всегда со значением 1.

Любые предложения, что здесь не так? (работает на iOS, кстати)

2 ответа

Решение

Да, мне потребовалось некоторое время, чтобы понять это, я получил тот же результат, пока не начал изучать код ASIHTTPRequest. Все, что вам нужно сделать, это добавить:

request.showAccurateProgress = YES;

перед вами networkQueue.showAccurateProgress = YES; потому что в противном случае он не читает информацию отдельного заголовка каждого файла и суммирует байты.

Это может помочь:

[request setDidReceiveDataSelector:@selector(request:didReceiveBytes:)]; 
Другие вопросы по тегам