Как получить размер документа перед загрузкой - PullRequest
0 голосов
/ 07 сентября 2011

Я хочу скачать документ, который я делаю, используя следующий код

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 ]

2 голосов
/ 07 сентября 2011

В вашем делегате NSURLConnection реализуйте метод - (void)connection:(NSURLConnection *)theConnection didReceiveResponse:(NSURLResponse *)response. В этом методе вы можете вызвать

long long expLength = [response expectedContentLength];

В expLength ожидаемый размер документа.

Но будьте осторожны:

Некоторые реализации протокола сообщают длину содержимого как часть ответ, но не все протоколы гарантируют доставку такого количества данные. Клиенты должны быть готовы иметь дело с большим или меньшим количеством данных.

1 голос
/ 07 сентября 2011

NSURLConnection вызывает своего делегата с

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

Что ж, нам нужно заглянуть внутрь NSURLResponse, чтобы найти ожидаемыйContentLength

- (long long)expectedContentLength   

Return Value The receiver’s expected content length,
or NSURLResponseUnknownLength if the length can’t be determined.
0 голосов
/ 07 сентября 2011

Вы можете сделать это любым способом, используя Синхронный / Асинхронный вызов.Для асинхронных есть методы делегатов, которые вам нужно реализовать в своем классе, а для синхронных вы можете вызывать их внутри области вашего метода.

...