GQNetWork 1.4.5

GQNetWork 1.4.5

测试已测试
Lang语言 Obj-CObjective C
许可协议 MIT
Released上次发布2020年6月

BossyGao 维护。



GQNetWork 1.4.5

  • developer_高

许可协议 MIT    支持 

GQNetWork

继承形式的网络请求框架,一步到位,支持流量统计,支持https请求,请求数据缓存机制,支持链式调用,支持model版本控制,支持block,delegate返回请求数据。

##设计图

1.GQNetwork网络请求部分架构图

GQNetwork网络请求部分架构图

2.GQNetwork数据缓存与解析及其他小模块设计图

GQNetwork数据缓存与解析及其他小模块设计图

简单使用

CocoaPods

1.在 Podfile 中添加 pod 'GQNetWork'。

2.执行 pod install 或 pod update。

3.添加一个类继承 GQDataRequest,详见demo。

*注: 如果只需要单独的 mapping 类,可以在 Podfile 中单独添加 pod 'GQMapping'

基本用法

1. 将GQNetWork文件夹添加到工程中。(详见示例)

2. 创建一个继承自GQDataRequest的类,在.m文件中覆盖以下基本方法,以便在需要使用网页中发起请求

  //请求的url
  - (NSString*)getRequestUrl;
	
  //host
  - (NSString *)getBaseUrl;
  
  //请求方法
  - (GQRequestMethod)getRequestMethod;
  

3. 在需要发起请求的网页中引入继承的类,添加使用block的请求方法(如果需要使用delegate或其他方法,请详见GQBaseDataRequest头文件)

 [DemoHttpRequest requestWithOnRequestFinished:^(GQBaseDataRequest *request, GQRequestResult *result) {
        NSLog(@"%@",result.rawResponse);
    } onRequestFailed:^(GQBaseDataRequest *request, NSError *error) {
        NSLog(@"%@",error);
    }];

HTTPS支持

通过类继承GQBaseDataRequest并覆写以下方法

- (NSData *)getCertificateData
{
	return [NSData dataWithContentsOfFile:证书文件];
}

自定义数据解析 原始数据->OC对象

1. 通过类继承GQBaseDataRequest并覆写以下方法

- (GQRequestDataHandler *)generateRequestHandler;

2. 使用一个自定义类继承GQRequestDataHandler类,覆写以下方法,在该方法中实现自己的解析流程

- (id)parseDataString:(NSString *)resultString error:(NSError **)error;

数据缓存

1. 通过提供的方法分别传递值到cacheKey(缓存键)和cacheType(缓存类型)即可实现简单的UserDefault或文件缓存,也可以在内存中缓存。2. 在使用缓存数据时,可以通过类继承GQBaseDataRequest并覆写以下方法来判断是否使用缓存数据

- (BOOL)onReceivedCacheData:(NSObject*)cacheData

使用假数据

1. 通过类继承GQBaseDataRequest并覆写以下方法来返回是否使用假数据,默认不使用

- (BOOL)useDumpyData;

2. 如果以上方法返回"yes"则使用假数据,则覆写以下方法来返回假数据,默认返回JSON字符串

- (NSString*)dumpyResponseString;

网络状态判断及网络状态改变通知

1. 本框架自带网络状态判断和网络状态改变通知。(1)使用以下方法获取网络状态

GQNetworkStatus status = [GQNetworkTrafficManager sharedManager].networkStatus;

网络状态分为以下三种

typedef NS_ENUM(NSInteger, GQNetworkStatus) {
    GQNotReachable = 0,//无网络链接
    GQReachableViaWiFi=2,//使用wifi链接
    GQReachableViaWWAN=1//使用移动蜂窝网链接
};

(2)如果需要网络状态改变的通知,请添加以下代码以及时获取网络状态的改变

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange:) name:kGQNetWorkChangedNotification object:nil];

- (void)networkChange:(id)data {
    GQNetworkStatus status = [GQNetworkTrafficManager sharedManager].networkStatus;
}

加载提示框

1.本框架自带加载提示框功能,如需使用,请通过提供的方法将需要显示提示框的父view传递到indicatorView。

Hard Use

前面的配置与Simple Use相同,还有高级用法。

链式调用 全程点语法支持

[DemoHttpRequest1 prepareRequset]
.requestUrlChain(@"product/list")
.onFinishedBlockChain(^(GQBaseDataRequest * request, GQMappingResult * result){
    GQDPRINT(@"%@",result.rawResponse);
})
.onFailedBlockChain(^(GQBaseDataRequest * request, NSError * error){
   
})
.parametersChain(@{})
.startRequestChain();

#warning

在iOS9及以上系统需要添加plist字段,否则无法发起请求。

NSAppTransportSecurity

<dict>

	<key>NSAllowsArbitraryLoads</key>
	
	<true/>
	
</dict>

##支持

欢迎指出bug或者需要改进的地方。欢迎提出issues、加入Q群交流iOS经验:578841619,我会及时作出回应。觉得好用的话不妨给个star吧,你的每个star是我持续维护的强大动力。