При загрузке файла из Amazon S3 в iOS.Время от времени NSURLConnectionDownloadDelegate метод didFailWithError: get call, и это то, что я получил, когда регистрировал полученный объект NSError
Код ошибки: 109 Ошибка домена: SSErrorDomain Описание ошибки: «Не удается подключиться к .s3.amazonaws.com» *
Обыскал всю документацию Apple, StackOverflow и другие сайты, но ничего не нашел по этому вопросу.Сегодня я поднял технический запрос в Apple также для этого, используя мою учетную запись разработчика.
Есть идеи?
Обновление:
Итак, после просмотра кода ошибки ответа HTTP (403 Forbidden), я понял.Это из-за ошибки «RequestTimeTooSkewed» от S3 (разница между временем запроса и текущим временем слишком велика.).Я перепроверил это, изменив системное время iPad / Mac на 1 час, и эта ошибка появляется немедленно, даже для небольшого (200 КБ) файла.
Теперь, как предлагается во многих блогах, я сначала делаю запрос HEADв AWS, как показано ниже, чтобы получить строку даты, не передавая системную дату
NSString *awsURL = @"http://s3.amazonaws.com";
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:awsURL]];
[request setHTTPMethod:@"HEAD"];
NSHTTPURLResponse *response;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error: NULL];
NSString *dateString = nil;
if ([response respondsToSelector:@selector(allHeaderFields)]) {
dateString = [[response allHeaderFields] objectForKey:@"Date"];
}
return dateString;
и установив ее в качестве заголовка даты в NSMutableURLRequest
[urlRequest setValue:awsDateString forHTTPHeaderField:@"Date"];
Этот запрос я добавляю в свою проблему дляскачать
NKAssetDownload *nkAssetDownload = [nkIssue addAssetWithRequest:urlRequest];
Все та же ошибка !!!!Теперь это более безумно, чем моя последняя ситуация.
Кто-нибудь?
Обновление 2
Мне удалось успешно выполнить запрос (даже системные часы моего iPad неверны), заменив «GMT» на «+0000»в строке даты.
Обновление 3 Тем не менее некоторые запросы не выполняются с той же ошибкой, что странно, но я предполагаю, что это что-то, что не работает NewsStand Framework.