All Projects → xiaozhuxiong121 → Pgnetworkhelper

xiaozhuxiong121 / Pgnetworkhelper

Licence: mit
PINCache做为AFNetworking缓存层,将AFNetworking请求的数据缓存起来,支持取消当前网络请求,以及取消所有的网络请求,除了常用的Get,Post方法,也将上传图片以及下载文件进行了封装,同样支持同步请求,使用方法极其简单。

Projects that are alternatives of or similar to Pgnetworkhelper

Ppnetworkhelper
AFNetworking 3.x 与YYCache封装
Stars: ✭ 1,586 (+1110.69%)
Mutual labels:  afnetworking, cocoapods
Hlnetworking
基于AFNetworking的高阶网络请求管理器
Stars: ✭ 276 (+110.69%)
Mutual labels:  afnetworking, cocoapods
Netfox
A lightweight, one line setup, iOS / OSX network debugging library! 🦊
Stars: ✭ 3,188 (+2333.59%)
Mutual labels:  afnetworking, cocoapods
Afnetworking Retrypolicy
Nice category that adds the ability to set the retry interval, retry count and progressiveness.
Stars: ✭ 197 (+50.38%)
Mutual labels:  afnetworking, cocoapods
Webhere
HTML scraping for Objective-C.
Stars: ✭ 16 (-87.79%)
Mutual labels:  afnetworking, cocoapods
Sqift
Powerful Swift wrapper for SQLite
Stars: ✭ 119 (-9.16%)
Mutual labels:  cocoapods
Opensource
♨️ 分享GitHub优秀开源项目和主流开发使用的网站、解决问题方案收集以及学习网站或资料,涵盖了iOS, macOS X, Blockchain, Flutter, Weex, H5, Games, C++, Script等多方面的内容,其中iOS大致包涵以下内容:音视频;IM和直播;逆向开发;图像相关(OpenGL, Metal, GPUImage);内购(IAP), ApplePay和第三方支付;安全攻防和应用加固, 数据安全和算法;常用第三方库;导航栏和状态栏;侧边菜单;数据持久;蓝牙, 手势指纹面容ID解锁, 图片浏览器, 扫码, 下拉和上拉刷新, 指示器, Toast, Menu, Sensor, Privacy, WebView和进度条, 动画, 选择器, 搜索, 分享, 图片验证码, 设备相关信息, 广告, 高仿项目及Demo等。
Stars: ✭ 123 (-6.11%)
Mutual labels:  afnetworking
Swifty360player
iOS 360-degree video player streaming from an AVPlayer.
Stars: ✭ 118 (-9.92%)
Mutual labels:  cocoapods
Vialersiplib
An Objective-c wrapper for PJSIP
Stars: ✭ 122 (-6.87%)
Mutual labels:  cocoapods
Emspinnerbutton
UIButton sublcass with loading animation
Stars: ✭ 117 (-10.69%)
Mutual labels:  cocoapods
Tinynetworking
🌩 Simple HTTP network abstraction layer written in Swift
Stars: ✭ 122 (-6.87%)
Mutual labels:  cocoapods
Swiftuiblurview
This view is also part of SwiftUIKit: https://github.com/danielsaidi/SwiftUIKit
Stars: ✭ 120 (-8.4%)
Mutual labels:  cocoapods
Adpuzzleanimation
Inspired by Fabric - Answers animation. Allows to "build" given view with pieces. Allows to "destroy" given view into pieces
Stars: ✭ 123 (-6.11%)
Mutual labels:  cocoapods
Dddkit
360 video player for iOS written in swift - a subset of SceneKit that works
Stars: ✭ 118 (-9.92%)
Mutual labels:  cocoapods
Cloudkitgdpr
Framework for allowing users to manage data stored in iCloud
Stars: ✭ 126 (-3.82%)
Mutual labels:  cocoapods
Towebviewcontroller
A view controller class for iOS that allows users to view web pages directly within an app.
Stars: ✭ 1,500 (+1045.04%)
Mutual labels:  cocoapods
Rcalendarpicker
RCalendarPicker A date picker control, Calendar calendar control, select control, calendar, date selection, the clock selection control. 日历控件 ,日历选择控件,日历,日期选择,时钟选择控件
Stars: ✭ 121 (-7.63%)
Mutual labels:  cocoapods
Luexpandabletableview
A subclass of UITableView with expandable and collapsible sections
Stars: ✭ 125 (-4.58%)
Mutual labels:  cocoapods
Bettersegmentedcontrol
An easy to use, customizable replacement for UISegmentedControl & UISwitch.
Stars: ✭ 1,782 (+1260.31%)
Mutual labels:  cocoapods
Touchdraw
A subclass of UIView which allows you to draw with your fingers.
Stars: ✭ 119 (-9.16%)
Mutual labels:  cocoapods

PGNetworkHelper

CocoaPods compatible

PINCache做为AFNetworking3.x缓存层,将AFNetworking3.x请求的数据缓存起来,支持取消当前网络请求,以及取消所有的网络请求,除了常用的Get,Post方法,也将上传图片以及下载文件进行了封装,使用方法极其简单。

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

PGNetworkHelper也支持同步请求

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

第一,经过测试PINCache缓存比AFNetworking自带的缓存要快。
第二,PINCache是将缓存数据进行了加密,更加安全。

CocoaPods安装

pod 'PGNetworkHelper', '>= 2.0'

使用

#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 文件。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].