Запрос 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)


person cboe    schedule 02.07.2011    source источник
comment
Действительно ли решение Хёрша сработало для вас? Потому что это не работает для меня.   -  person Kevin_TA    schedule 28.03.2013


Ответы (2)


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

request.showAccurateProgress = YES;

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

person h1vpdata    schedule 26.09.2011

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

[request setDidReceiveDataSelector:@selector(request:didReceiveBytes:)]; 
person mohsinj    schedule 23.05.2012