带缓存的POST请求

  • (void)cachenetworkWithURL: (NSString *)urlString
    parameter: (NSDictionary *)paraDic
    susccess: (void(^)(id obj)) succeee
    fail:(void(^)(NSError *error))fail{

    // NSURLSession 配置
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    //创建 sessionManager
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
    //创建请求
    NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@”POST” URLString:urlString parameters:paraDic constructingBodyWithBlock:nil error:nil];
    //创建请求任务
    NSURLSessionDataTask dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {

    //缓存文件路径
    NSString *cachePath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingString:urlString.md5];
    
    //如果有 error , 请求失败
    //反之, 请求成功
    if (error) {
        NSLog(@"网络请求失败");
    
        //请求失败, 从本地把缓存数据取出
        id obj = [NSDictionary dictionaryWithContentsOfFile:cachePath];
        if (obj) {
            succeee(obj[@"data"]);
        }else{
            fail(error);
        }
    
    } else {
        //把object存储到本地
        //读写
        [@{@"data": responseObject} writeToFile:cachePath atomically:YES];
        succeee(responseObject);
    
    }
    

    }];
    //开启任务
    [dataTask resume];

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章