Код ошибки SSErrorDomain 109. Загрузка NewsStand с Amazon S3 - PullRequest
3 голосов
/ 12 марта 2012

При загрузке файла из 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.

1 Ответ

0 голосов
/ 18 июля 2012

Так что это ошибка RequestTimeTooSkewed и приведенный выше код для получения даты из ответа головы сервера S3 для добавления в запрос делает свое дело.

...