{"id":15160654,"url":"https://github.com/xiaozhuxiong121/pgnetworkhelper","last_synced_at":"2025-10-24T18:32:06.777Z","repository":{"id":62449935,"uuid":"74801672","full_name":"xiaozhuxiong121/PGNetworkHelper","owner":"xiaozhuxiong121","description":"PINCache做为AFNetworking缓存层，将AFNetworking请求的数据缓存起来,支持取消当前网络请求，以及取消所有的网络请求，除了常用的Get，Post方法，也将上传图片以及下载文件进行了封装，同样支持同步请求，使用方法极其简单。","archived":false,"fork":false,"pushed_at":"2017-10-14T14:26:53.000Z","size":56,"stargazers_count":131,"open_issues_count":4,"forks_count":29,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-03-14T23:23:56.445Z","etag":null,"topics":["afnetworking","cocoapods","ios","objective-c","pgnetworkhelper","pincache"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xiaozhuxiong121.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-26T03:13:29.000Z","updated_at":"2024-03-05T06:59:08.000Z","dependencies_parsed_at":"2022-11-01T23:31:36.720Z","dependency_job_id":null,"html_url":"https://github.com/xiaozhuxiong121/PGNetworkHelper","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaozhuxiong121%2FPGNetworkHelper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaozhuxiong121%2FPGNetworkHelper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaozhuxiong121%2FPGNetworkHelper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiaozhuxiong121%2FPGNetworkHelper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xiaozhuxiong121","download_url":"https://codeload.github.com/xiaozhuxiong121/PGNetworkHelper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219874890,"owners_count":16554626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["afnetworking","cocoapods","ios","objective-c","pgnetworkhelper","pincache"],"created_at":"2024-09-26T23:05:07.215Z","updated_at":"2025-10-24T18:32:05.030Z","avatar_url":"https://github.com/xiaozhuxiong121.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PGNetworkHelper](http://upload-images.jianshu.io/upload_images/1340308-6532130a70265dab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](https://github.com/xiaozhuxiong121/PGNetworkHelper)  \n\n[![CocoaPods compatible](https://img.shields.io/cocoapods/v/PGNetworkHelper.svg)](https://cocoapods.org/pods/PGNetworkHelper)\n![](https://img.shields.io/badge/platform-iOS-red.svg) ![](https://img.shields.io/badge/language-Objective--C-orange.svg)\n![](https://img.shields.io/badge/license-MIT%20License-brightgreen.svg) \n [![](https://img.shields.io/badge/jianshu-piggybear-red.svg)](http://www.jianshu.com/u/3740632b2002)\n\nPINCache做为AFNetworking3.x缓存层，将AFNetworking3.x请求的数据缓存起来,支持取消当前网络请求，以及取消所有的网络请求，除了常用的Get，Post方法，也将上传图片以及下载文件进行了封装，使用方法极其简单。  \n\u003e PGNetworkHelper屏蔽了AFNetworking自带的缓存，并将PINCache缓存的key也用**MD5加密**，确保数据的安全。  \n\u003e \n\u003e PGNetworkHelper也支持同步请求\n\n**AFNetworking本身就带有缓存策略，为什么要使用PINCache作为缓存呢？**\n\u003e 第一，经过测试PINCache缓存比AFNetworking自带的缓存要快。  \n\u003e 第二，PINCache是将缓存数据进行了加密，更加安全。\n\n# CocoaPods安装\n```\npod 'PGNetworkHelper', '\u003e= 2.0'\n```\n# 使用\n``` oc\n#import \u003cPGNetworkHelper/PGNetworkHelper.h\u003e\n\n//设置baseUrl\n[PGNetAPIClient baseUrl:@\"baseUrl\"];\n//设置SSL\n[PGNetAPIClient policyWithPinningMode:AFSSLPinningModeNone];\n//设置缓存路径\n//多用户一般用userId来保存每个用户的缓存数据\n[PGNetworkCache pathName:@\"userId\"];\n\n//GET请求 只需要将cache设置为true就可以自动缓存\n[PGNetworkHelper GET:@\"yourUrlString\" parameters:nil cache:false responseCache:nil success:^(id responseObject) {\n    NSLog(@\"responseObject = %@\", responseObject);\n} failure:^(NSError *error) {\n    NSLog(@\"error = %@\", error);\n}];\n\n\n//POST请求 只需要将cache设置为true就可以自动缓存\n[PGNetworkHelper POST:@\"yourUrlString\" parameters:@{@\"username\":@\"test\",@\"password\":@\"test\"} cache:false responseCache:nil success:^(id responseObject) {\n    NSLog(@\"responseObject = %@\", responseObject);\n} failure:^(NSError *error) {\n    NSLog(@\"error = %@\", error);\n}];\n    \n```\n# 自动缓存\n```\n//只需要将cache设置为true就可以自动缓存，如果不想缓存就设置cache为false\n[PGNetworkHelper GET:@\"yourUrlString\" parameters:nil cache:true responseCache:^(id responseCache) {\n\tNSLog(@\"responseCache = %@\", responseCache);\n}  success:^(id responseObject) {\n\tNSLog(@\"responseObject = %@\", responseObject);\n} failure:^(NSError *error) {\n\tNSLog(@\"error = %@\", error);\n}];\n```\n# 使用手动缓存\n\u003e 如果需要将数据先进行处理，然后在缓存也是可以的。\n\n```\n//cache设置为true\n[PGNetworkHelper GET:@\"yourUrlString\" parameters:nil cache:true responseCache:^(id responseCache) {\n\tNSLog(@\"responseCache = %@\", responseCache);\n}  success:^(id responseObject) {\n\t//这里进行要缓存的数据，cacheKey就是url，如果有参数的话，就把参数拼接到cacheKey后面，下次就可以直接在responseCache block里面获取了\n\t[PGNetworkCache saveResponseCache:responseObject forKey:@\"\"];\n} failure:^(NSError *error) {\n\tNSLog(@\"error = %@\", error);\n    }];\n```\n# 删除缓存\n```\n[PGNetworkCache removeResponseCacheForKey:@\"cacheKey\"];\n```\n\n# 删除所有的缓存\n```\n[PGNetworkCache removeAllResponseCache];\n```\n\n# 同步请求\n```\n#import \u003cPGNetworkHelper/PGNetworkHelper+Synchronously.h\u003e\n[PGNetworkHelper synchronouslyGET:@\"yourUrlString\" parameters:nil cache:true responseCache:^(id responseCache) {\n\tNSLog(@\"responseCache = %@\", responseCache);\n} success:^(id responseObject) {\n\tNSLog(@\"responseObject = %@\", responseObject);\n} failure:^(NSError *error) {\n\tNSLog(@\"error = %@\", error);\n}];\n```\n# 取消当前的网络请求\n```\nNSURLSessionTask *task = [PGNetworkHelper GET:@\"api/user/login.json\" parameters:nil cache:false responseCache:nil success:^(id responseObject) {\n\tNSLog(@\"responseObject = %@\", responseObject);\n} failure:^(NSError *error) {\n\tNSLog(@\"error = %@\", error);\n}];\n[task cancel]; //取消当前网络请求\n```\n\n# 取消所有的网络请求\n```\n[PGNetworkHelper cancelAllOperations];\n```\n\n# 上传图片\n```\n/**\n *  上传图片文件\n *\n *  @param URL        请求地址\n *  @param parameters 请求参数\n *  @param images     图片数组\n *  @param name       文件对应服务器上的字段\n *  @param fileName   文件名\n *  @param mimeType   图片文件的类型,例:png、jpeg(默认类型)....\n *  @param progress   上传进度信息\n *  @param success    请求成功的回调\n *  @param failure    请求失败的回调\n *\n *  @return 返回的对象可取消请求,调用cancle方法\n */\n+ (__kindof NSURLSessionTask *)uploadWithURL:(NSString *)URL\n                                  parameters:(NSDictionary *)parameters\n                                      images:(NSArray\u003cUIImage *\u003e *)images\n                                        name:(NSString *)name\n                                    fileName:(NSString *)fileName\n                                    mimeType:(NSString *)mimeType\n                                    progress:(HttpProgress)progress\n                                     success:(HttpRequestSuccess)success\n                                     failure:(HttpRequestFailed)failure;\n```\n\n# 下载文件\n\n```\n/**\n *  下载文件\n *\n *  @param URL      请求地址\n *  @param fileDir  文件存储目录(默认存储目录为Download)\n *  @param progress 文件下载的进度信息\n *  @param success  下载成功的回调(回调参数filePath:文件的路径)\n *  @param failure  下载失败的回调\n *\n *  @return 返回的对象可取消请求,调用cancle方法\n */\n+ (__kindof NSURLSessionTask *)downloadWithURL:(NSString *)URL\n                                       fileDir:(NSString *)fileDir\n                                      progress:(HttpProgress)progress\n                                       success:(void(^)(NSString *filePath))success\n                                       failure:(HttpRequestFailed)failure;\n```\n\n# 缓存数据\n```\n[PGNetworkCache saveResponseCache:@\"CacheObject\" forKey:@\"cacheKey\"];\n```\n# 获取缓存数据\n```\n[PGNetworkCache getResponseCacheForKey:@\"cacheKey\"];\n```\n\n# 许可证\nPGNetworkHelper 使用 MIT 许可证，详情见 LICENSE 文件。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaozhuxiong121%2Fpgnetworkhelper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxiaozhuxiong121%2Fpgnetworkhelper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaozhuxiong121%2Fpgnetworkhelper/lists"}