2012-03-12 55 views
3

在iOS中从Amazon S3下载文件时。间歇性NSURLConnectionDownloadDelegate的方法didFailWithError:被调用,这是我得到了什么,当我登录收到NSError对象SSErrorDomain错误代码109.从Amazon S3下载NewsStand

错误代码:109 误差区域:SSErrorDomain 错误描述:“无法连接到.s3.amazonaws.com”

搜索了所有Apple文档,StackOverflow和其他网站,但未在此找到任何内容。今天,我使用我的开发人员帐户向Apple提出了技术查询。

有什么想法?

更新:

所以寻找到HTTP响应错误代码(403禁止)后,我计上心来。这是因为S3中的“RequestTimeTooSkewed”错误(请求时间与当前时间之间的差异过大)。我通过将iPad/Mac的系统时间更改1小时进行了交叉检查,并且即使对于小文件(200kb),此错误也立即出现。

现在的建议在许多博客,我首先做一个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

设置此为Date头
[urlRequest setValue:awsDateString forHTTPHeaderField:@"Date"]; 

这个请求我加入到我的问题下载

NKAssetDownload *nkAssetDownload = [nkIssue addAssetWithRequest:urlRequest]; 

还是一样的错误!它现在比我最后的情况更疯狂了。

有人吗?

更新2

我是能够使请求成功(甚至我的iPad的系统时钟不正确)在日期字符串“+0000”取代“格林尼治标准时间”。

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

回答

0

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