每个 url 的 downloadTaskWithRequest 都没有进展
No progression with downloadTaskWithRequest for every url
我正在使用 downloadTaskWithRequest
下载一些文件,我正在使用 KVO 来观察进度。
这是我的代码:
// create the request from an url
NSMutableURLRequest *request = [mySession.requestSerializer requestWithMethod:@"GET" URLString:url parameters:nil error:&serializationError];
NSProgress *localProgress = nil;
NSURLSessionDownloadTask *downloadTask = [mySession downloadTaskWithRequest:request
progress:localProgress
destination:^NSURL *(NSURL *targetPath, NSURLResponse *response)
{ ... }
completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error)
{ ... }];
下载文件完美无缺,但为什么有些情况下我可以跟随进度,而有些情况下进度永远不会更新?
url 进展顺利:
url = @"http://www.fond-ecran-hd.net/pc-driver/1351.jpg";
url 没有进展:
url = @"http://lorempixel.com/1920/1920/";
我知道工作案例和非工作案例之间的区别是一些 url 直接 link 到文件 (/path/file.ext) 而不是其他的。
但我想知道为什么,如果有解决方法...
我从 URL 获得的 HTTP 响应 object 必须包含一个名为 Content-Length 的 header,它将给出文件的长度!
如果服务器没有return这个,似乎无法跟踪下载进度。
我正在使用 downloadTaskWithRequest
下载一些文件,我正在使用 KVO 来观察进度。
这是我的代码:
// create the request from an url
NSMutableURLRequest *request = [mySession.requestSerializer requestWithMethod:@"GET" URLString:url parameters:nil error:&serializationError];
NSProgress *localProgress = nil;
NSURLSessionDownloadTask *downloadTask = [mySession downloadTaskWithRequest:request
progress:localProgress
destination:^NSURL *(NSURL *targetPath, NSURLResponse *response)
{ ... }
completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error)
{ ... }];
下载文件完美无缺,但为什么有些情况下我可以跟随进度,而有些情况下进度永远不会更新?
url 进展顺利:
url = @"http://www.fond-ecran-hd.net/pc-driver/1351.jpg";
url 没有进展:
url = @"http://lorempixel.com/1920/1920/";
我知道工作案例和非工作案例之间的区别是一些 url 直接 link 到文件 (/path/file.ext) 而不是其他的。 但我想知道为什么,如果有解决方法...
我从 URL 获得的 HTTP 响应 object 必须包含一个名为 Content-Length 的 header,它将给出文件的长度!
如果服务器没有return这个,似乎无法跟踪下载进度。