-(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
if([recievedData length]) [ recievedData setLength:0 ];
download_size =[response expectedContentLength];
}
我有这个代码。 download_size是NSInteger。 expectedContentLenght总是返回:-1。 也许有人知道为什么?我尝试使用很长时间,但效果是一样的。
感谢您的帮助。
答案 0 :(得分:22)
预期内容长度仅在服务器提供时设置,例如通过Content-Length响应头设置。 -1大小表示预期的内容大小未知。
如果您在请求中设置Accept-Encoding: gzip
,则无论服务器发送什么内容长度,URL加载系统都会显示并告诉您预期大小为-1。这是因为它在将数据传递给您之前对其进行了解压缩,但是在所有数据都已下载之前它无法知道最终的未压缩大小,这在您收到此回调之后就已经很好了。
答案 1 :(得分:0)
只要我知道,NSURLResponse不会更新该属性。您需要使用NSHTTPURLResponse而不是......