本文为CocoaChina网友piggybear投稿
PINCache做为AFNetworking缓存层,将AFNetworking请求的数据缓存起来,支持取消当前网络请求,以及取消所有的网络请求,使用方法及其简单。
通过Cocoapods安装
pod 'PGNetworkHelper'
github地址
https://github.com/xiaozhuxiong121/PGNetworkHelper
使用
#import //设置baseUrl(必须要设置) [PGNetAPIClient baseUrl:@"baseUrl"]; //设置SSL [PGNetAPIClient policyWithPinningMode:AFSSLPinningModeNone]; //设置缓存路径 //多用户一般用userId来保存每个用户的缓存数据 [PGNetworkCache pathName:@"userId"]; //GET请求 [PGNetworkHelper GET:@"api/user/login.json" parameters:nil cache:false responseCache:nil success:^(id responseObject) { NSLog(@"error = %@", responseObject); } failure:^(NSError *error) { NSLog(@"error = %@", error); }]; //POST请求 [PGNetworkHelper POST:@"api/user/login.json" parameters:@{@"username":@"test",@"password":@"test"} cache:false responseCache:nil success:^(id responseObject) { NSLog(@"error = %@", responseObject); } failure:^(NSError *error) { NSLog(@"error = %@", error); }];
需要注意的是
[PGNetAPIClient baseUrl:@"baseUrl"];
这行代码必须要设置
API
/** * GET请求 * * @param URL 请求地址 * @param parameters 请求参数 * @param cache 是否缓存数据 * @param responseCache 缓存数据的回调 * @param success 请求成功的回调 * @param failure 请求失败的回调 * * @return 返回的对象可取消请求,调用cancle方法 */ + (NSURLSessionTask *)GET:(NSString *)URL parameters:(id)parameters cache:(BOOL)cache responseCache:(HttpRequestCache)responseCache success:(HttpRequestSuccess)success failure:(HttpRequestFailed)failure; /** * POST请求 * * @param URL 请求地址 * @param parameters 请求参数 * @param cache 是否缓存数据 * @param responseCache 缓存数据的回调 * @param success 请求成功的回调 * @param failure 请求失败的回调 * * @return 返回的对象可取消请求,调用cancle方法 */ + (NSURLSessionTask *)POST:(NSString *)URL parameters:(id)parameters cache:(BOOL)cache responseCache:(HttpRequestCache)responseCache success:(HttpRequestSuccess)success failure:(HttpRequestFailed)failure; /** * 上传图片文件 * * @param URL 请求地址 * @param parameters 请求参数 * @param images 图片数组 * @param name 文件对应服务器上的字段 * @param fileName 文件名 * @param mimeType 图片文件的类型,例:png、jpeg(默认类型).... * @param progress 上传进度信息 * @param success 请求成功的回调 * @param failure 请求失败的回调 * * @return 返回的对象可取消请求,调用cancle方法 */ + (__kindof NSURLSessionTask *)uploadWithURL:(NSString *)URL parameters:(NSDictionary *)parameters images:(NSArray *)images name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType progress:(HttpProgress)progress success:(HttpRequestSuccess)success failure:(HttpRequestFailed)failure; /** * 下载文件 * * @param URL 请求地址 * @param fileDir 文件存储目录(默认存储目录为Download) * @param progress 文件下载的进度信息 * @param success 下载成功的回调(回调参数filePath:文件的路径) * @param failure 下载失败的回调 * * @return 返回NSURLSessionDownloadTask实例,可用于暂停继续,暂停调用suspend方法,开始下载调用resume方法 */ + (__kindof NSURLSessionTask *)downloadWithURL:(NSString *)URL fileDir:(NSString *)fileDir progress:(HttpProgress)progress success:(void(^)(NSString *filePath))success failure:(HttpRequestFailed)failure;
缓存类
/** * 设置缓存路径 * * @param name 路径文件夹的名称 */ + (void)pathName:(NSString *)name; /** * 缓存网络数据 * * @param responseCache 服务器返回的数据 * @param key 缓存数据对应的key值,推荐填入请求的URL */ + (void)saveResponseCache:(id )responseCache forKey:(NSString *)key; /** * 取出缓存的数据 * * @param key 根据存入时候填入的key值来取出对应的数据 * * @return 缓存的数据 */ + (id)getResponseCacheForKey:(NSString *)key; /** * * 删除缓存 * @param key 要删除缓存的key值 */ + (void)removeResponseCacheForKey:(NSString *)key; /** * 删除所有的缓存 */ + (void)removeAllResponseCache;