在我最近的Web服务调用应用程序中,我正在使用AFNetworking - > AFHTTPClient。
如果Web服务响应时间大于1秒,我需要显示加载器,否则我只需要调用Web服务。
如何在使用AFNetworking时计算此时间。使用NSURLConnection,我可以执行[response expectedContentLength]
之类的操作,并了解下载文件所需的时间。但AFNetworking怎么样?
答案 0 :(得分:4)
您可以为AFNetworking操作设置进度块 喜欢AFDownloadRequestOperation操作
在此块中,您可以获得预期的内容长度和您接收的数据包大小,您可以计算完成操作所需的时间(考虑网络速度将保持不变)
但是这不能在从Web服务接收数据之前完成 (就像你在1或0.1秒内获得200个字节) 然后划分按时间接收的数据包并获得网络速度,然后计算整个数据下载的时间(Web服务操作)
[operation setProgressiveDownloadProgressBlock:^(AFDownloadRequestOperation *operation, NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile) {
NSLog(@"Operation%i: bytesRead: %ld", 1, (long)bytesRead);
NSLog(@"Operation%i: totalBytesRead: %lld", 1, totalBytesRead);
NSLog(@"Operation%i: totalBytesExpected: %lld", 1, totalBytesExpected);
NSLog(@"Operation%i: totalBytesReadForFile: %lld", 1, totalBytesReadForFile);
NSLog(@"Operation%i: totalBytesExpectedToReadForFile: %lld", 1, totalBytesExpectedToReadForFile);
}
}];