gpt4 book ai didi

ios - SSErrorDomain 错误代码 109。NewsStand 从 Amazon S3 下载

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:43 25 4
gpt4 key购买 nike

在 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 header

[urlRequest setValue:awsDateString forHTTPHeaderField:@"Date"];

我正在将此请求添加到我的问题中以供下载

 NKAssetDownload *nkAssetDownload = [nkIssue addAssetWithRequest:urlRequest];

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

有人吗?

更新 2

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

更新 3仍然有一些请求因相同的错误而失败,这很奇怪,但我假设这是 NewsStand Framework 搞砸了。

最佳答案

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

关于ios - SSErrorDomain 错误代码 109。NewsStand 从 Amazon S3 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com