AFNetworking 2.0:NSURLSessionDownloadTask 在收到 302 到 AWS S3 时被取消

Posted

技术标签:

【中文标题】AFNetworking 2.0:NSURLSessionDownloadTask 在收到 302 到 AWS S3 时被取消【英文标题】:AFNetworking 2.0: NSURLSessionDownloadTask is cancelled when received 302 to AWS S3 【发布时间】:2013-10-04 10:46:43 【问题描述】:

我正在使用 README 文件(来自 AFNetworking 2.0 页面)中的一个简单示例来下载图像。对于直接从我的网络服务器提供的图像,一切正常。 但是对于那些位于 S3 上的网络服务器返回 302 重定向以下错误:

Error Domain=NSURLErrorDomain Code=-999 "cancelled"

当我尝试直接从 S3 下载图像(使用相同的代码)(省略重定向)时,我收到了同样的错误。

我已经使用 wget 检查了实际图像的可用性。图片已公开 (https://youguide.s3.amazonaws.com/icons/user_96x96.png)。

有人遇到过类似的问题吗?

【问题讨论】:

【参考方案1】:

我在使用 S3 时遇到了同样的问题,并且似乎已经解决了。 AFNetworking 在取消请求的身份验证质询处理逻辑中返回了一个值。

通过告诉AFURLSessionManager 如何处理身份验证挑战,我已经解决了这个问题。

[manager setSessionDidReceiveAuthenticationChallengeBlock:^NSURLSessionAuthChallengeDisposition (NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential) 
    return NSURLSessionAuthChallengePerformDefaultHandling;
];

【讨论】:

感谢您的提示。使用 AFHTTPRequestOperationManager 而不是 SessionManager 的情况呢? 将您的AFNetworking 升级到 2.0.1,应该会为您修复该错误。昨天有一个提交全面解决了这个问题,因为它是在 HTTP 对应子类的AFURLSessionManager 中完成的。这是相关的 GitHub 问题线程:github.com/AFNetworking/AFNetworking/issues/…。 你拯救了我的一天!非常感谢! 我在使用 afn 3 的 S3 图像文件时遇到同样的错误,我该如何解决?

以上是关于AFNetworking 2.0:NSURLSessionDownloadTask 在收到 302 到 AWS S3 时被取消的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 JSON 解析

AFNetworking 2.0 对现有项目的更新

AfNetworking 2.0 发布问题

如何在旧的 AFNetworking 中使用 AFNetworking 2.0+?

Afnetworking 2.0 发布方法错误

AFNetworking 2.0 和请求标头