Я использую if-modified-так как в заголовке HTTP, чтобы решить, следует ли мне загружать файл. Приложение было протестировано, и все было в порядке, но теперь я получаю ошибки, когда я спрашиваю экземпляр NSHTTPURLResponse response.statusCode
или [[response allHeaderFields] objectForKey:@"Last-Modified"]
.NSHTTPURLResponse становится NSURLResponse
Кажется, что это просто NSURLResponse. Каковы возможные причины?
Я читал this topic, но проблема все еще не ясна для меня. Спасибо заранее! UPD: некоторый код:
NSURL *url = [NSURL URLWithString:urlString];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSMutableURLRequest *myRequest = [NSMutableURLRequest requestWithURL:url];
[myRequest setHTTPMethod:@"GET"];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[myRequest addValue:[df stringFromDate:lastModifiedLocal] forHTTPHeaderField:@"If-Modified-Since"];
myRequest.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;
NSHTTPURLResponse *response=nil;
NSError* error = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (error) {
NSLog(@"Error sending request: %@", [error localizedDescription]);
}
//As was advised
NSHTTPURLResponse* newResp = (NSHTTPURLResponse*)response;
//crash here
NSLog(@"%d", newResp.statusCode);
UPD: Ошибка в коде - myRequest и запрос разные переменные. Задача решена.
Каков результат для 'data' после' sendSynchronousRequest: returnResponse: error: '? Кроме того, почему бы не попробовать передать фактический указатель «NSError», поэтому, если что-то пойдет не так, возможно, вы знаете, что это такое, зарегистрировав «error.localizedDescription»? – NJones
Данные нормальные, как и ожидалось. –
Произошла ошибка из-за моего глупого несогласия - '[myRequest addValue: [df stringFromDate: lastModifiedLocal] forHTTPHeaderField: @" If-Modified-Since "]; myRequest.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData; 'и ' NSData * data = [NSURLConnection sendSynchronousRequest: request returnResponse: & response error: & error]; 'после него другая переменная с локальным URL-адресом, поэтому там нет HTTP. Сожалею. Будет одобрен самый полный ответ. –