为什么总是返回-1

-(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。 也许有人知道为什么? 我试过使用很久,但效果是一样的。

感谢帮助。

预期的内容长度仅在服务器提供时设置,例如通过Content-Length响应头。 -1大小意味着预期的内容大小是未知的。

如果您的请求中设置了Accept-Encoding: gzip ,那么无论服务器发送的内容长度是多less,URL加载系统都会打开并告诉您预期的大小是-1。 这是因为它在将数据传递给你之前先对数据进行解压缩,但是直到所有的数据被下载之后,它才能知道最终的未压缩大小,这是在你接收到这个callback之后。

只要我知道,NSURLResponse不会更新该属性。 你需要使用NSHTTPURLResponse来代替…