我敢肯定对此有一个非常简单的解释,但是我正在解决这个问题。

    -(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 btw上工作)

最佳答案

是的,花了我一段时间才弄清楚这一点,直到开始研究ASIHTTPRequest代码之前,我得到了相同的结果。您要做的就是添加:

request.showAccurateProgress = YES;

在您执行networkQueue.showAccurateProgress = YES之前;因为否则它不会读取每个文件的单独头部信息,也不会将字节加起来。

关于ios - ASIHttpRequest请求:didReceiveBytes:不能按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6554347/

10-13 04:03