【问题标题】:how to track a single download speed with asihttprequest如何使用 asihttprequest 跟踪单个下载速度
【发布时间】:2011-06-12 00:26:48
【问题描述】:

有人可以帮我解决 asihttprequest 吗?

我想跟踪我下载的每个文件的下载速度,而不是所有文件的平均速度。

对于所有下载的平均速度,有[ASIHTTPRequest averageBandwidthUsedPerSecond] 但是我可以用什么来跟踪每次下载?

谢谢

【问题讨论】:

    标签: iphone ios performance request asihttprequest


    【解决方案1】:

    考虑到 ASI 已死,我最近不得不在一个较旧的项目上执行此操作。如果其他人需要帮助:

    -(void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes
    {
        if (!lastBytesReceived)
            lastBytesReceived = [NSDate date];
    
        NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:lastBytesReceived];
    
        float KB = (bytes / 1024);
    
        float kbPerSec =  KB * (1.0/interval); //KB * (1 second / interval (less than one second))
    
        NSLog(@"%llu bytes received in %f seconds @ %0.01fKB/s",bytes,interval, kbPerSec);
    
        lastBytesReceived = [NSDate date];
    }
    

    【讨论】:

      【解决方案2】:

      您可以为每个请求设置一个downloadProgressDelegate,它将获得一个请求:didReceiveBytes:每次收到一些数据时调用 - 您可以使用它来计算下载速度。

      请参阅此处的文档:

      http://allseeing-i.com/ASIHTTPRequest/How-to-use#custom_progress_tracking

      【讨论】:

      • 如何计算从收到第一个字节开始的总时间?
      • 你可以将 [NSDate date] 的结果存储在 didReceiveResponseHeaders 委托方法中,然后在 didReceiveBytes 中使用 [NSData timeIntervalSinceReferenceDate:]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多