SSErrorDomain错误代码109. NewsStand从Amazon S3下载

时间:2012-03-12 16:19:39

标签: ios ios5 newsstand-kit nsurlconnectiondelegate

从iOS中的Amazon S3下载文件时。间歇性地NSURLConnectionDownloadDelegate的方法didFailWithError:被调用,这是我记录收到的NSError对象时得到的

错误代码:109 错误域:SSErrorDomain 错误说明:“无法连接到.s3.amazonaws.com”

搜索了所有Apple文档,StackOverflow和其他网站,但未找到任何相关内容。今天我使用我的开发者帐户向Apple提出了技术问题。

有什么想法吗?

更新

所以在查看HTTP响应错误代码(403 Forbidden)之后,我明白了。这是因为来自S3的“RequestTimeTooSkewed”错误(请求时间和当前时间之间的差异太大。)。我通过将iPad的/ Mac的系统时间改变1小时来交叉检查它,这个错误现在立即出现,即使对于一个小的(200kb)文件也是如此。

现在正如许多博客中所建议的那样,我首先向AWS发出HEAD请求,如下所示,以获取日期字符串而不传递系统日期

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

中将其设置为Date标头
[urlRequest setValue:awsDateString forHTTPHeaderField:@"Date"];

此请求我将添加到我的下载问题

 NKAssetDownload *nkAssetDownload = [nkIssue addAssetWithRequest:urlRequest];

仍然是同样的错误!!!!它现在比我上一次的情况更疯狂。

任何人?

更新2

我能够通过在日期字符串中将“GMT”替换为“+0000”来成功地提出请求(即使我的iPad的系统时钟不正确)。

更新3 仍有一些请求因同样的错误而失败,这很奇怪,但我认为这是NewsStand框架搞砸了。

1 个答案:

答案 0 :(得分:0)

所以它是RequestTimeTooSkewed错误,上面的代码从S3服务器的头响应中获取日期以添加请求就可以了。