swift - 使用 NSURLSession 时 GET 成功,但使用 AFHTTPSessionManager 时 GET 失败

标签 swift afnetworking afnetworking-3

我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequestNSURLSession 获取图像,但是当我使用 AFHTTPSessionManager 和相同的 NSMutableURLRequest 时,我收到 403 错误。 (我实际上想通过调用 setImageWithURLRequest 来加载图像,这也会给我一个 403 错误,但我编写了这段代码,使用 AFHTTPSessionManager 来尝试调试问题。)我能做什么AFNetworking 出错?

let request = NSMutableURLRequest()
request.HTTPMethod = "GET"
request.URL = coverPhotoUrl // A presigned url to an image on S3

// The operation succeeds if I uncomment the NSURLSession line
// and comment out the AFHTTPSessionManager line.
//NSURLSession.sharedSession().dataTaskWithRequest(request) {
AFHTTPSessionManager().dataTaskWithRequest(request) {
    date, response, error in
    if let error = error {
        Log.error?.message("request failed: \(error.localizedDescription)")
    } else {
        Log.debug?.message("request succeeded.")
    }
}
.resume()

最佳答案

由于内容类型问题,AFNetworking 请求失败。在我将 S3 文件的内容类型从二进制/八位字节更改为图像/jpeg 后,setImageWithURL 起作用了。

让 S3 设置内容类型也很困难。为了防止其他人使用,S3 会忽略我的 PUT 请求中的内容类型,直到我指定内容长度。尽管实际文件要长得多,但在生成预签名 URL 时,我只是使用了虚拟长度 1。

关于swift - 使用 NSURLSession 时 GET 成功,但使用 AFHTTPSessionManager 时 GET 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39009149/

相关文章:

ios - 无法在 cocoa touch uiview 类和 Storyboard 中的 subview 之间控制拖动 xcode

objective-c - 使用 AFNetworking 从中获取 JSON null

iphone - 使用 AFHttpClient 进行身份验证时出现问题

ios - 如何快速避免 AFNetworking 导致的内存泄漏

ios - 使用 afnetworking 3.0.4 时发生崩溃,[NSProgress setTotalUnitCount :], 谁能告诉我原因

swift - 如何附加视频或电影文件然后快速发送电子邮件

ios - 未触发动态类型通知

ios - 如何修复 Alamofire 5 错误 : "Cannot specialize non-generic type ' DataResponseSerializer'"?

ios - AFNetworking 3.0 在应用移至后台时继续上传