我已经创建了用于下载文件的URLSession,文件正在正确下载,没有问题。
我想显示剩余字节的百分比计数,但是使用委托函数:
-(void) URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
并且其参数
totalBytesExpectedToWrite
始终返回-1。 几天前一切正常,代码没有变化,但突然停止发送期望的字节。
我的请求代码如下:
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
NSMutableURLRequest*request = [NSMutableURLRequest requestWithURL:fileUrl];
NSDictionary*param = [[NSDictionary alloc]initWithObjectsAndKeys:@"",@"Accept-Encoding", nil];
[request setAllHTTPHeaderFields:param];
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request];
[downloadTask resume];
我想念的api有什么变化吗?还是其他方式?
最佳答案
-1
是NSURLSessionTransferSizeUnknown
,这意味着http服务器未提供“Content-Length”标头(并且使用“Transfer-Encoding:分块”发送数据)。
您可能无能为力。您可以尝试https://stackoverflow.com/a/12599242/1187415的解决方法是否也适合您的情况:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:anURL];
[request addValue:@"" forHTTPHeaderField:@"Accept-Encoding"];
关于ios - URLSession委托(delegate)函数totalBytesExpectedToWrite始终返回-1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52698264/