NSURLSession的网络请求类2 封装 缓存 轻量 低耦合 CC_HttpTask 解决了打印日志对于Unicode编码不能正常显示中文的问题
出处https://blog.csdn.net/gwh111/article/details/79700933免费下载https://github.com/gwh111/bench_ios积分下载https://download.csdn.net/download/gwh111/10344443使用特点:1、轻量、代码量少、默认使用原生NSURLSession,可替换成AFNetw...
出处https://blog.csdn.net/gwh111/article/details/79700933
免费下载https://github.com/gwh111/bench_ios
积分下载https://download.csdn.net/download/gwh111/10344443
使用特点:
1、轻量、代码量少、默认使用原生NSURLSession,可替换成AFNetwordking等库
2、低耦合、可根据app配置必要属性,含签名
3、缓存,在debug中缓存上一次成功数据,实际开发遇到服务端发系统时,可使用缓存数据继续开发。
4、解析json,可二次封装回调model
调用,使用方法
//http头部信息
[[CC_HttpTask getInstance]setRequestHTTPHeaderFieldDic:
@{@"appName":@"ljzsmj_ios",
@"appVersion":@"1.0.3",
@"appUserAgent":@"e1",
}];
//签名的key 一般登录后获取
[[CC_HttpTask getInstance]setSignKeyStr:@"abc"];
//额外每个请求要传的参数
[[CC_HttpTask getInstance]setExtreDic:@{@"key":@"v"}];
NSURL *url=[NSURL URLWithString:@"http://xxx/service.json?"];
[[CC_HttpTask getInstance]post:url Params:@{@"service":@"PURCHASE_ORDRE_JOINED_SHOW_CONFIG_QUERY"} model:[[ResModel alloc]init] FinishCallbackBlock:^(NSString *error, ResModel *result) {
if (error) {
[CC_Note showAlert:error];
return ;
}
CCLOG(@"%@",result.resultDic);
}];
params是请求接口参数
NSString *paraString=[CC_FormatDic getSignFormatStringWithDic:paramsDic andMD5Key:_signKeyStr];
signkey是签名,用的是md5签名,可根据服务端要求修改
ResModel是解析的模型,含有解析后的数据和源数据
有两部分组成,ResModel是数据分析模型
//
// CC_HttpResponseModel.h
// bench_ios
//
// Created by gwh on 2018/3/19.
// Copyright © 2018年 apple. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ResModel : NSObject
@property(nonatomic,assign) BOOL debug;
@property(nonatomic,retain) NSString *serviceStr;
@property(nonatomic,retain) NSString *resultStr;
@property(nonatomic,retain) NSDictionary *resultDic;
@property(nonatomic,retain) NSString *errorStr;
- (void)parsingError:(NSError *)error;
- (void)parsingResult:(NSString *)resultStr;
@end
分析了错误和正确数据
在debug下,错误后还会去找缓存数据,来回调到正确结果中。
将网络请求的错误和服务端的错误统一回调到error中,因为对于我们前端而言,无论哪种错误,只要不是正确数据,就要分开处理,比如显示error,所以将两种回调合并。
if (_resultDic[@"response"][@"error"]) {//服务端的错误
_errorStr=_resultDic[@"response"][@"error"][@"name"];
}
默认的合并条件是respose中的error,这里可根据不同服务端结构修改
将请求服务名,请求地址和回调统一打印,解决找不到哪个service回调哪个结果的问题
如果debug模式,默认一起打印
if (model.debug) {
CCLOG(@"\nURL:%@%@\nRes:%@",url,paraString,model.resultDic);
}
解析操作在子线程中进行,之后回到主线程
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)