PGNetworkHelper 2.0.1

PGNetworkHelper 2.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最后发布Aug 2017

piggybear 维护。



 
依赖
AFNetworking>= 0
PINCache>= 0
 

  • piggybear

PINCache 作为 AFNetworking3.x 缓存层,将 AFNetworking3.x 请求的数据缓存起来,支持取消当前网络请求和取消所有网络请求(除了常用的 Get、Post 方法),还封装了上传图片和下载文件,使用方法非常简单。

PGNetworkHelper 屏蔽了 AFNetworking 自带的缓存,并将 PINCache 缓存的键用 MD5 加密,以确保数据安全。

PGNetworkHelper 还支持同步请求

AFNetworking 本身就带有缓存策略,为什么还要使用 PINCache 作为缓存呢?

首先,经过测试,PINCache 缓存性能比 AFNetworking 自带缓存更快。
其次,PINCache 对缓存数据进行了加密,更安全。

使用

#import <PGNetworkHelper/PGNetworkHelper.h>

//设置baseUrl
[PGNetAPIClient baseUrl:@"baseUrl"];
//设置SSL
[PGNetAPIClient policyWithPinningMode:AFSSLPinningModeNone];
//设置缓存路径
//多用户一般用userId来保存每个用户的缓存数据
[PGNetworkCache pathName:@"userId"];

//GET请求 只需要将cache设置为true就可以自动缓存
[PGNetworkHelper GET:@"yourUrlString" parameters:nil cache:false responseCache:nil success:^(id responseObject) {
    NSLog(@"responseObject = %@", responseObject);
} failure:^(NSError *error) {
    NSLog(@"error = %@", error);
}];


//POST请求 只需要将cache设置为true就可以自动缓存
[PGNetworkHelper POST:@"yourUrlString" parameters:@{@"username":@"test",@"password":@"test"} cache:false responseCache:nil success:^(id responseObject) {
    NSLog(@"responseObject = %@", responseObject);
} failure:^(NSError *error) {
    NSLog(@"error = %@", error);
}];
    

自动缓存

//只需要将cache设置为true就可以自动缓存,如果不想缓存就设置cache为false
[PGNetworkHelper GET:@"yourUrlString" parameters:nil cache:true responseCache:^(id responseCache) {
	NSLog(@"responseCache = %@", responseCache);
}  success:^(id responseObject) {
	NSLog(@"responseObject = %@", responseObject);
} failure:^(NSError *error) {
	NSLog(@"error = %@", error);
}];

使用手动缓存

如果需要先将数据进行处理然后在缓存也是可以的。

//cache设置为true
[PGNetworkHelper GET:@"yourUrlString" parameters:nil cache:true responseCache:^(id responseCache) {
	NSLog(@"responseCache = %@", responseCache);
}  success:^(id responseObject) {
	//这里进行要缓存的数据,cacheKey就是url,如果有参数的话,就把参数拼接到cacheKey后面,下次就可以直接在responseCache block里面获取了
	[PGNetworkCache saveResponseCache:responseObject forKey:@""];
} failure:^(NSError *error) {
	NSLog(@"error = %@", error);
    }];

删除缓存

[PGNetworkCache removeResponseCacheForKey:@"cacheKey"];

删除所有缓存

[PGNetworkCache removeAllResponseCache];

同步请求

#import <PGNetworkHelper/PGNetworkHelper+Synchronously.h>
[PGNetworkHelper synchronouslyGET:@"yourUrlString" parameters:nil cache:true responseCache:^(id responseCache) {
	NSLog(@"responseCache = %@", responseCache);
} success:^(id responseObject) {
	NSLog(@"responseObject = %@", responseObject);
} failure:^(NSError *error) {
	NSLog(@"error = %@", error);
}];

取消当前的网络请求

NSURLSessionTask *task = [PGNetworkHelper GET:@"api/user/login.json" parameters:nil cache:false responseCache:nil success:^(id responseObject) {
	NSLog(@"responseObject = %@", responseObject);
} failure:^(NSError *error) {
	NSLog(@"error = %@", error);
}];
[task cancel]; //取消当前网络请求

取消所有网络请求

[PGNetworkHelper cancelAllOperations];

上传图片

/**
 *  上传图片文件
 *
 *  @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<UIImage *> *)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 返回的对象可取消请求,调用cancle方法
 */
+ (__kindof NSURLSessionTask *)downloadWithURL:(NSString *)URL
                                       fileDir:(NSString *)fileDir
                                      progress:(HttpProgress)progress
                                       success:(void(^)(NSString *filePath))success
                                       failure:(HttpRequestFailed)failure;

缓存数据

[PGNetworkCache saveResponseCache:@"CacheObject" forKey:@"cacheKey"];

获取缓存数据

[PGNetworkCache getResponseCacheForKey:@"cacheKey"];

许可证

PGNetworkHelper 使用 MIT 许可证,详情见 LICENSE 文件。