iOS AFN和原生网络请求短时间访问同一接口返回数据相同

是因为NSURLRequest的默认缓存机制,需将NSURLRequest的cachePolicy属性来设置请求的缓存策略。
iOS对NSURLRequest提供了7种缓存策略:(实际上能用的只有4种)

NSURLRequestUseProtocolCachePolicy  // 默认的缓存策略(取决于协议)
NSURLRequestReloadIgnoringLocalCacheData  // 忽略缓存,重新请求
NSURLRequestReloadIgnoringLocalAndRemoteCacheData  // 未实现
NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData  // 忽略缓存,重新请求
NSURLRequestReturnCacheDataElseLoad  // 有缓存就用缓存,没有缓存就重新请求
NSURLRequestReturnCacheDataDontLoad  // 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式)
NSURLRequestReloadRevalidatingCacheData  // 未实现

AFN中找到AFURLRequestSerialization.m文件 找到

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                                 URLString:(NSString *)URLString
                                parameters:(id)parameters
                                     error:(NSError *__autoreleasing *)error 

加上

[mutableRequest setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];

最终代码

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                                 URLString:(NSString *)URLString
                                parameters:(id)parameters
                                     error:(NSError *__autoreleasing *)error
{
    NSParameterAssert(method);
    NSParameterAssert(URLString);

    NSURL *url = [NSURL URLWithString:URLString];

    NSParameterAssert(url);

    NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:url];
    mutableRequest.HTTPMethod = method;
    [mutableRequest setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];

    for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) {
        if ([self.mutableObservedChangedKeyPaths containsObject:keyPath]) {
            [mutableRequest setValue:[self valueForKeyPath:keyPath] forKey:keyPath];
        }
    }

    mutableRequest = [[self requestBySerializingRequest:mutableRequest withParameters:parameters error:error] mutableCopy];

    return mutableRequest;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,850评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,803评论 1 32
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,040评论 3 119
  • 当我想把故乡的秋天,秋天的天空,作为素材创作我的组画的时候,我就想起那南飞的大雁。那该是怎样一种情形呢!在几乎用太...
    上善若水_cd86阅读 3,468评论 2 7
  • 今天是付爱宝特种兵第三天,学习了五种开场白聊天并更好的融会贯通,在刚刚开设特种兵的时候,就在想自己最想学习的是什么...
    艾哲宇阅读 968评论 0 0