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