gpt4 book ai didi

ios - AFNetworking (AFHttpClient) 离线模式不适用于 NSURLRequestReturnCacheDataDontLoad 策略

转载 作者:可可西里 更新时间:2023-11-01 03:10:26 26 4
gpt4 key购买 nike

我在我的应用程序中使用 AFNetworking 并尝试通过使用缓存数据(如果可用)使其在离线模式下工作。

我预计在将请求缓存策略设置为 NSURLRequestReturnCacheDataDontLoad 后,getPath:parameters:success:failure: 将在离线时成功使用缓存数据。但是,即使缓存中有数据(我通过使用代码检查缓存来验证),getPath 也会在飞行模式下简单地失败。

AFNetworking github 中有一个线程:https://github.com/AFNetworking/AFNetworking/issues/378但似乎这个问题根本没有得到解决。 AFNetworking 的作者简单地指向Apple's document ,它说:

NSURLRequestReturnCacheDataDontLoad Specifies that the existing cache data should be used to satisfy a request, regardless of its age or expiration date. If there is no existing data in the cache corresponding to a URL load request, no attempt is made to load the data from the originating source, and the load is considered to have failed. This constant specifies a behavior that is similar to an “offline” mode.

正如 Apple 所说,NSURLRequestReturnCacheDataDontLoad 正是为离线模式设计的。

我在 iOS6 上测试,我用 NSURLCache 和 SDURLCache 测试,结果都是一样的。

请求失败,错误信息:

2012-12-22 03:11:18.988 Testapp[43692:907] error: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo=0x211b87c0 {NSErrorFailingURLStringKey=http://Testapp.com/api/v1/photo/latest/, NSErrorFailingURLKey=http://Testapp.com/api/v1/photo/latest/, NSLocalizedDescription=The Internet connection appears to be offline., NSUnderlyingError=0x211b9720 "The Internet connection appears to be offline."}

最佳答案

原来是 iOS 6 的一个 bug。

AFNetworking 中有一个专门针对此问题的讨论帖:https://github.com/AFNetworking/AFNetworking/issues/566

感谢 guykogus 在这个问题上的提示和实验。我在这个问题上花了一个晚上!

一个总结性的解决方法是从缓存中读取响应,而不是使用 NSURLRequestReturnCacheDataDontLoad 策略:

NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
if (cachedResponse != nil &&
[[cachedResponse data] length] > 0)
{
// Get cached data
....
}

关于ios - AFNetworking (AFHttpClient) 离线模式不适用于 NSURLRequestReturnCacheDataDontLoad 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14002422/

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