Latest 1.2.4
Homepage https://github.com/JohnnyHooo/HJNetwork
License MIT
Platforms ios 8.0
Dependencies AFNetworking, YYCache
Authors

CI Status
Version
License
Platform

本来只是想开源自己的网络库方便大家使用,结果被发现代码完全被copy并且用着自己的名义发布,连README都被copy.我已经无话可说了.
https://github.com/hongdong/HDNetwork 大家可以去提issue支持一下
我本人是非常欢迎大家使用我的代码进行二次或者多次封装.但是完全copy我的代码在用自己的名义发布,我真心接受不了!

前言

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

Demo效果

特点

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

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

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

  • 支持多种缓存策略。

  • 按App版本号(也可自定义版本号)缓存网络请求内容。

安装

支持 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;

Latest podspec

{
    "name": "HJNetwork",
    "version": "1.2.4",
    "summary": "A short description of HJNetwork.",
    "description": "HJNetworku5bf9AFHTTPSessionManageru8fdbu884cu4e8cu6b21u5c01u88c5uff0cu5305u62ecu7f51u7edcu8bf7u6c42uff0cu6587u4ef6u4e0au4f20uff0cu6587u4ef6u4e0bu8f7du8fd9u4e09u4e2au65b9u6cd5u3002u5e76u4e14u652fu6301RESTful API GETuff0cPOSTuff0cHEADuff0cPUTuff0cDELETEuff0cPATCHu7684u8bf7u6c42u3002u540cu65f6u4f7fu7528YYCacheu505au4e86u5f3au5927u7684u7f13u5b58u7b56u7565u3002",
    "homepage": "https://github.com/JohnnyHooo/HJNetwork",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Johnny": "[email protected]"
    },
    "source": {
        "git": "https://github.com/JohnnyHooo/HJNetwork.git",
        "tag": "1.2.4"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source_files": "HJNetwork/Classes/**/*",
    "dependencies": {
        "AFNetworking": [],
        "YYCache": []
    }
}

Pin It on Pinterest

Share This