0

使用委托

- (void)connection: (NSURLConnection*) connection didReceiveResponse: (NSHTTPURLResponse*) response {

下载大小可以通过以下方式获取 long long :

downloadSize = [response expectedContentLength];

但我的 downloadSize 有时是-1。有时它是正确的值,但有一半的时间它返回 -1。

这个关于 stackoverflow 的答案显示了一个可能的解决方案,并解释了为什么我得到值 -1:为什么 [response expectedContentLength] 总是返回 -1

我试过了:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:_downloadURL] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
[request setValue:@"" forHTTPHeaderField:@"Accept-Encoding"]; //Don't use Gzip to see total size of download

但这并不能改变任何事情。有谁知道为什么expectedContentLength 给我值-1?同样,它只给了我一半的尝试时间。有时还可以。

编辑 当我使用代码时,我在 DidReceiveResponse 中记录了 [response AllHeaderFiles]

[request setValue:@"" forHTTPHeaderField:@"Accept-Encoding"];

"Content-Type" = "text/html";
Date = "Mon, 16 Sep 2013 12:43:54 GMT";
Server = "Apache/2";
"Transfer-Encoding" = Identity;
Vary = "Accept-Encoding,User-Agent";
"X-Powered-By" = "PHP/5.2.17";

这是没有该代码的输出:

Connection = "keep-alive";
"Content-Encoding" = gzip;
"Content-Length" = 1500;
"Content-Type" = "text/html";
Date = "Mon, 16 Sep 2013 12:38:56 GMT";
Server = "Apache/2";
Vary = "Accept-Encoding,User-Agent";
"X-Powered-By" = "PHP/5.2.17";

但是无论我得到 -1 还是下载大小,两个输出都保持不变。

4

0 回答 0