GQNetWork 1.4.5

GQNetWork 1.4.5

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2020年6月

BossyGao 维护。



GQNetWork 1.4.5

  • 作者
  • developer_高

License MIT    支持 

GQNetWork

继承形式的网络请求框架,一站式的解决方案,支持流量统计,支持 HTTPS 请求,请求数据缓存机制,支持链式调用,支持模型版本控制,支持 block 和 delegate 返回请求数据。

##设计图

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

GQNetwork网络请求部分架构图

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

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

简单使用

CocoaPods

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

2.执行 pod install 或 pod update。

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

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

基本使用

1. 将GQNetWork文件夹添加到项目中。(请参考demo)

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(缓存key)和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

在iOS 9以上系统,需要添加plist字段,否则无法发送请求。

NSAppTransportSecurity

<dict>

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

##Support

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