如何在下载之前获取文档大小

时间:2011-09-07 12:29:52

标签: iphone ios cocoa-touch nsurlconnection

我想通过以下代码

下载我执行此操作的文档
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:str] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:500];

   [request setHTTPMethod:@"GET"]; 


NSData *returnData =[[NSURL alloc]init];
    returnData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

根据下载的数据我想显示进度条,有什么方法可以做到这一点。

提前致谢。

3 个答案:

答案 0 :(得分:2)

NSURLConnection实施方法- (void)connection:(NSURLConnection *)theConnection didReceiveResponse:(NSURLResponse *)response的代理中。在这种方法中,您可以调用

long long expLength = [response expectedContentLength];

expLength中,您将获得预期的文档大小。

但请注意:

  

某些协议实现报告内容长度作为一部分   响应,但并非所有协议都保证提供这么多   数据。客户应该准备好处理更多或更少的数据。

答案 1 :(得分:1)

NSURLConnection使用

调用其委托
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

好吧,我们需要查看NSURLResponse,找到expectedContentLength

- (long long)expectedContentLength   

Return Value The receiver’s expected content length,
or NSURLResponseUnknownLength if the length can’t be determined.

答案 2 :(得分:0)

您可以使用同步/异步调用以任一方式执行此操作。对于Asynchronous,您需要在类中实现委托方法,对于Synchronous,您可以在方法范围内调用它。