登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

HJNetwork网络请求 支持RESTful方式请求和数据缓存

[复制链接]
来自: JohnnyHoo 分类: iOS精品源码 上传时间: 2018-4-20 13:04:27
Tag:

项目介绍:

HJNetwork

HJNetwork GitHub地址
CI Status
Version
License
Platform

前言

本来是想在GitHub找一个符合自己App的网络请求库,结果就是要么不支持缓存或者不支持RESTful API 请求,
又或者带缓存的又不支持过滤某一些参数字段(否则无法得到缓存),带着这样的需求之下就有了 “HJNetwork” 这个库。
初衷就是在最大程度下满足所有Appc的日常需求。


特点

  • HJNetwork 对 AFHTTPSessionManager 进行二次封装。包括网络请求、文件上传、文件下载这三个方法。并且支持RESTful API GET、POST、PUT、DELETE、PATCH的请求。同时使用YYCache做了强大的缓存策略。

  • 拥有 AFNetwork 大部分常用功能,包括网络状态监听等,提供类方法和实例方法调用。

  • 非常好的扩展性,开放出了YYCache和AFNetwork的实例对象,更便于满足各种不同需求。

  • 支持多种缓存策略。


























安装

支持 Cocoapods 安装

pod 'HJNetwork'


使用

所有方法都可以直接看 HJNetworking.h 中的声明以及注释。

HJNetwork 的全局配置

设置请求根路径

[HJNetwork setBaseURL:@"https://atime.com/app/v1/"];

设置缓存过滤参数key(如时间戳,随机数)否则会导致无法得到缓存数据

[HJNetwork setFiltrationCacheKey:@[@"time",@"ts"]];

设置日志

日志打印的开关
[HJNetwork setLogEnabled:YES];

网络状态

网络状态监听

[HJNetwork getNetworkStatusWithBlock:^(HJNetworkStatusType status) {
        switch (status) {
            case HJNetworkStatusUnknown:
                //未知网络
                break;
            case HJNetworkStatusNotReachable:
                //无网路
                break;
            case HJNetworkStatusReachableWWAN:
                //手机网络
                break;
            case HJNetworkStatusReachableWiFi:
                //WiFi网络
                break;
            default:
                break;
        }
    }];


网络请求

缓存策略

typedef NS_ENUM(NSUInteger, HJCachePolicy){
    /**只从网络获取数据,且数据不会缓存在本地*/
    HJCachePolicyIgnoreCache = 0,
    /**只从缓存读数据,如果缓存没有数据,返回一个空*/
    HJCachePolicyCacheOnly = 1,
    /**先从网络获取数据,同时会在本地缓存数据*/
    HJCachePolicyNetworkOnly = 2,
    /**先从缓存读取数据,如果没有再从网络获取*/
    HJCachePolicyCacheElseNetwork = 3,
    /**先从网络获取数据,如果没有,此处的没有可以理解为访问网络失败,再从缓存读取*/
    HJCachePolicyNetworkElseCache = 4,
    /**先从缓存读取数据,然后在本地缓存数据,无论结果如何都会再次从网络获取数据,在这种情况下,Block将产生两次调用*/
    HJCachePolicyCacheThenNetwork = 5
};

请求方式

以 POST 方法为例,方法定义:

/**
 POST请求
 
 @param url 请求地址
 @param parameters 请求参数
 @param cachePolicy 缓存策略
 @param callback 请求回调
 */
+ (void)POSTWithURL:(NSString *)url
         parameters:(NSDictionary *)parameters
        cachePolicy:(HJCachePolicy)cachePolicy
            callback:(HJHttpRequest)callback;

自定义请求方式:

/**
 自定义请求方式
 
 @param method 请求方式(GET, POST, HEAD, PUT, PATCH, DELETE)
 @param url 请求地址
 @param parameters 请求参数
 @param cachePolicy 缓存策略
 @param callback 请求回调
 */
+ (void)HTTPWithMethod:(HJRequestMethod)method
                    url:(NSString *)url
             parameters:(NSDictionary *)parameters
            cachePolicy:(HJCachePolicy)cachePolicy
                callback:(HJHttpRequest)callback;

取消请求

/**
 取消所有HTTP请求
 */
+ (void)cancelAllRequest;

/**
 取消指定URL的HTTP请求
 */
+ (void)cancelRequestWithURL:(NSString *)url;

上传

/**
 上传文件
 
 @param url 请求地址
 @param parameters 请求参数
 @param name 文件对应服务器上的字段
 @param filePath 文件路径
 @param progress 上传进度
 @param callback 请求回调
 */
+ (void)uploadFileWithURL:(NSString *)url
               parameters:(NSDictionary *)parameters
                     name:(NSString *)name
                 filePath:(NSString *)filePath
                 progress:(HJHttpProgress)progress
                  callback:(HJHttpRequest)callback;

下载

/**
 下载文件

 @param url 请求地址
 @param fileDir 文件存储的目录(默认存储目录为Download)
 @param progress 文件下载的进度信息
 @param callback 请求回调
 */
+ (void)downloadWithURL:(NSString *)url
                fileDir:(NSString *)fileDir
               progress:(HJHttpProgress)progress
                callback:(HJHttpDownload)callback;


缓存处理

设置最大缓存内存

/**
 *  磁盘最大缓存开销大小 bytes(字节)
 */
+ (void)setCostLimit:(NSInteger)costLimit;

获取网络缓存的总大小

/**
 *  获取网络缓存的总大小 bytes(字节)
 *  推荐使用该方法 不会阻塞主线程,通过block返回
 */
+ (void)getAllHttpCacheSizeBlock:(void(^)(NSInteger totalCount))block;

获取网络缓存的总大小

/**
 *  删除所有网络缓存
 *  推荐使用该方法 不会阻塞主线程,同时返回Progress
 */
+ (void)removeAllHttpCacheBlock:(void(^)(int removedCount, int totalCount))progress
                       endBlock:(void(^)(BOOL error))end;

相关源码推荐:

我来说两句
*滑动验证:
所有评论(5)
打个酱油的 2018-4-20 14:33:29
学习...学习...
回复
码农创新者 2018-4-20 14:33:32
感谢大神分享,必须顶!
回复
Rf2698 2018-4-20 14:33:37
好好 学习了 确实不错
回复
A7472 2018-4-20 14:33:42
code4app确实是个好地方,必须支持~
回复
乱世佳人520 2018-4-20 14:33:59
不错不错,楼主辛苦了。。。
回复
phoiu 2018-4-20 14:34:08
感谢大神分享,必须顶!
回复
1024 0 0
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表