Latest 1.1.0
Homepage https://github.com/DamonHu/YZNetTool
License MIT
Platforms ios 9.0, requires ARC
Dependencies AFNetworking, SVProgressHUD
Frameworks UIKit, Foundation
Authors

YZNetTool使用说明

该工具是对AFNetworking的3.x版本的一个封装,提供了返回json格式检测、请求悬浮窗显示于隐藏、延迟显示悬浮窗、请求时屏幕点击响应、网络超时设置和重试次数设置。

为了使用方便,提供了下面的几个请求方式用作不同的用途。

typedef NS_ENUM(NSUInteger, YZNetToolRequestType) {
    YZNetToolRequestTypePost = 0,           //POST: 普通post请求,返回jsonData
    YZNetToolRequestTypeGet,                //GET:  普通get请求,返回jsonData
    YZNetToolRequestTypeUploadFileAndData,  //POST: 上传文件和数据,返回jsonData
    YZNetToolRequestTypePostDownLoadFile,   //POST: 带参数post下载数据或文件
    YZNetToolRequestTypeGetDownLoadFile,    //GET:  不带参数get下载数据或文件
    YZNetToolRequestTypeUploadAndDownLoad   //POST: 上传文件之后返回的数据是需要下载的文件流类型
};

可配置选项

该工具在请求时提供了YZNetToolConfig用来配置请求信息,下面几个可选择的配置项

///请求时屏幕是否可以点击,默认为NO:不可点击
@property (assign,nonatomic)BOOL canTouchWhenRequest;
///屏幕是否隐藏请求的旋转标识,默认为NO:显示请求标识
@property (assign,nonatomic)BOOL hiddenProgressHUD;
///设置旋转的标识的显示文字,默认为旋转不带文字,显示请求标识时有效
@property (strong,nonatomic)NSString *progressHUDText;
///发起请求之后多少秒之后没回调才开始显示旋转标识,不设置的话,请求时会立即显示旋转标识
@property (assign,nonatomic)float delayShowProgressHUD;
///设置网络超时时间,默认为10s
@property (assign,nonatomic)float timeoutInterval;
///设置请求失败之后的重试次数,默认为3次
@property (assign,nonatomic)int retryCount;
///是否异步发起请求,默认为NO
@property (assign,nonatomic)BOOL shouldAsyn;

发送请求

发送请求就是统一的一个函数,参数就是配置项和发送请求的类型

+(void)startRequestWithYZNetToolConfig:(YZNetToolConfig*)netToolConfig WithType:(YZNetToolRequestType)requestType andCompleteCallBack:(YZNetToolCompetionHandler)completion;

取消请求

可以通过url取消请求,也可以取消所有正在进行的请求

///通过URL取消请求
+(void)cancelRequestByURL:(NSString*)url;

///通过YZNetToolConfig取消请求
+(void)cancelRequestByConfig:(YZNetToolConfig*)netToolConfig;

///取消所有请求
+(void)cancelAllNetRequest;

网络状态

监听网络状态和获取当前的网络状态

///检测网络状态
+(void)startNetMonitoringComplete;

///获取当前网络状态
+(YZNetReachabilityStatus)currentNetStatue;

返回json参数检测

YZNetReciveParamCheckTools用来检测返回参数的类型和值是否符合规则。

-(instancetype)initWithDictionary:(NSDictionary*)dic withPostErrorWithUrl:(NSString*)url param:(NSDictionary*)param;

dic是要检测的内容,url和param是请求的url和参数,用来记录发生异常的参数。

/**
 添加检测的字段

 @param name 字段key值
 @param paramType 字段指定的类型
 @param canNil 是否可空
 */
-(void)addCheckParamName:(NSString*)name withType:(YZNetErrorParamType)paramType canNil:(BOOL)canNil;

数据输出开关

YZNetToolDefConfig.h文件中

#define DEBUG_MODE true     //开启控制台输出返回数据
#define DEBUG_MODE false    //关闭输出

导入使用

文件导入

将YZNetTool文件夹的内容导入到项目即可

cocoapods安装

pod 'YZNetTool'

使用方法

发送请求

//普通post请求
NSString *[email protected]"http://baidu.com";
YZNetToolConfig *netToolsConfig = [[YZNetToolConfig alloc] initWithUrl:url];
//延迟显示请求hud
[netToolsConfig setDelayShowProgressHUD:1.0f];    
[YZNetTool startRequestWithYZNetToolConfig:netToolsConfig WithType:YZNetToolRequestTypeGet andCompleteCallBack:^(NSURLResponse *response, id responseObject, NSError *error) {
        YZNetReciveParamCheckTools *checkTools = [[YZNetReciveParamCheckTools alloc] initWithDictionary:[[responseObject objectForKey:@"newslist"] objectAtIndex:0] withPostErrorWithUrl:netToolsConfig.url param:netToolsConfig.requestData];
        //title是否是数字,并且不可空
        [checkTools addCheckParamName:@"title" withType:kYZNetErrorParamNumber canNil:NO];
        if ([checkTools isAccord]) {
            NSLog(@"检测通过");
        }else{
            NSLog(@"检测不通过");
        }
}];

监测网络状态的变化通知

//添加网络变化的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(netChange:) name:YZNetworkingReachabilityDidChangeNotification object:nil];
///检测网络状态
[YZNetTool startNetMonitoringComplete];

///网络状态变化的通知
-(void)netChange:(NSNotification*)notification{
    YZNetReachabilityStatus status = [[notification.userInfo objectForKey:YZNetworkingReachabilityNotificationStatusItem] integerValue];
    NSLog(@"%ld",(long)status);
}

其他说明

该库的网络请求基于AFNetworking,飘窗提示使用的SVProgressHUD,所以如果没有这两个库会报错,如果想使用其他的飘窗库,可以将YZNetTool.m文件中

[SVProgressHUD show];
[SVProgressHUD showWithStatus:netToolConfig.progressHUDText];
[SVProgressHUD dismiss];

之类的调用注销或者替换掉即可。

胡东东博客

fix

2018-01-07 v1.0.3

  1. 修正了内存重复创建的问题,现在请求内存平稳

Latest podspec

{
    "name": "YZNetTool",
    "version": "1.1.0",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "summary": "YZu7f51u7edcu8bf7u6c42u5e93uff0cu57fau4e8eAFNetworkingu5c01u88c5",
    "homepage": "https://github.com/DamonHu/YZNetTool",
    "authors": {
        "DamonHu": "[email protected]"
    },
    "source": {
        "git": "https://github.com/DamonHu/YZNetTool.git",
        "tag": "1.1.0"
    },
    "requires_arc": true,
    "platforms": {
        "ios": "9.0"
    },
    "source_files": "netTools/YZNetTool/*.{h,m}",
    "frameworks": [
        "UIKit",
        "Foundation"
    ],
    "dependencies": {
        "AFNetworking": [
            "~>3.1.0"
        ],
        "SVProgressHUD": [
            "~>2.1.2"
        ]
    },
    "documentation_url": "http://www.hudongdong.com/ios/758.html"
}

Pin It on Pinterest

Share This