gpt4 book ai didi

ios - 无法使用 AFHTTPRequestOperation Manager 下载图像

转载 作者:行者123 更新时间:2023-11-30 14:10:46 25 4
gpt4 key购买 nike

我正在尝试使用以下代码从给定 URL 下载图像 (jpeg):

let manager = AFHTTPRequestOperationManager()
manager.responseSerializer = AFImageResponseSerializer()
manager.responseSerializer.acceptableContentTypes = NSSet(array: ["application/octet-stream"]) as Set<NSObject>

manager.GET(imageURL, parameters: nil,
success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) -> Void in
println("IMAGE SUCCESS")
}, failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
println("IMAGE FAIL")
})

目前,在我的互联网上,在模拟器上测试时会调用 success block 。但是,在 iPhone 上测试时会调用 failure block 。在另一个网络上,成功 block 始终在 iPhone 和模拟器上调用。

我无法弄清楚是什么导致了这个问题。我尝试将 Content-Type 设置为“image/jpeg”,但仍然得到相同的结果。我错过了什么吗?

错误是:

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x1675f381 {NSErrorFailingURLStringKey=<...>, NSErrorFailingURLKey=<...>, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x166c7891 "The request timed out."}

最佳答案

您是否请求许多图像(或进行许多网络请求)?如果是这样,您可能需要限制 AFHTTPRequestOperationManager:

manager.operationQueue.maxConcurrentOperationCount = 5

如果您不这样做,然后继续发起许多请求,则当网络请求排队时,即使 NSURLConnection (AFHTTPRequestOperationManager 使用在幕后)一次只能运行 4 或 5 个请求,后面的请求甚至可能要等到前面的请求完成后才能开始。您希望根据请求开始的时间(而不是请求排队的时间)启动网络请求的超时逻辑。通过限制 maxConcurrentOperationCount,您可以确保网络请求在合理执行之前不会启动。

请注意,假设您对所有请求使用相同的 AFHTTPRequestOperationManager,而不是为新请求实例化新的操作管理器。但这将确保在其他请求的积压减少到可接受的水平之前不会启动请求。

--

顺便说一句,我只是建议增强它,而不是替换 acceptableContentTypes:

var acceptableContentTypes = manager.responseSerializer.acceptableContentTypes ?? Set<NSObject>()
acceptableContentTypes.insert("application/octet-stream")
manager.responseSerializer.acceptableContentTypes = acceptableContentTypes

坦白说,我宁愿看到您修复从服务器检索的图像的 Content-Type,这样它就不会发送 application/octet-stream code> 响应,但如果您不能这样做,上面的方法可能是调整内容类型的更谨慎的方法。这可确保您接受自定义 application/octet-stream 类型以及标准图像类型。

关于ios - 无法使用 AFHTTPRequestOperation Manager 下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31801734/

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