资料介绍
软件简介
YiNetwork是一个的HTTP请求封装库,基于AFNetworking的AFHTTPSessionManager。
YiNetwork主要是一个基类库,主要是两个类YiBaseRequest和YiBaseModel.
之所以创建两个基类,是为了让各个请求之间的耦合性降低,能够非常简单的实现一个请求,并且在上层很简单调用一个请求。每一个请求一个子类也非常能够方便团队协作,每个人都可以管理自己的请求模块。
另外,由于Apple在网络请求方面由NSURLConnection(iOS 2-9)转向NSURLSession(iOS7以上),随之AFNetworking 3.0也就废弃了NSURLConnection相关的 AFURLConnectionOperation,AFHTTPRequestOperation,AFHTTPRequestOperationManager 三个类,并且建议使用AFHTTPSessionManager,所以YiBaseRequest也是基于AFHTTPSessionManager的封 装。
YiNetwork目前依赖JSONModel version1.1.2和AFNetworking version2.6.1,是一套值得选择的App请求方案。
Podfile
platform :ios, '7.0'pod "YiNetwork", "~> 0.9.2"
YiBaseModel
YiBaseModel继承自第三方库JSONModel,当然你也可以不用使用它,自己解析JSON数据或者其它格式的数据
YiBaseRequest
YiBaseRequest必须子类化
属性
@property (nonatomic, strong) NSMutableDictionary *getParams; @property (nonatomic, strong) NSMutableDictionary *postParams;
可以在子类自定义的init方法里面,加入需要的GET参数或者POST参数
@property (nonatomic, assign) NSInteger retryCount; @property (nonatomic, assign) NSInteger retryIndex;
retryCount表示请求出错时重试的次数,默认为0;retryIndex表示正在重试第几次
方法
- (void)requestWithSuccess:(void(^)(YiBaseModel *model,NSURLSessionTask *task))success failure:(void(^)(NSError *error,NSURLSessionTask *task))failure;
数据请求的方法,只要在上层调用该方法就可以获得请求成功或者失败的反馈,以得到YiBaseModel的数据。
- (YiHTTPRequestMethod)requestMethod;
需要实现的子类方法,表示请求方法,默认是YiHTTPRequestMethodGet为GET请求
- (YiBaseModel *)responseModelWithData:(id)data;
处理请求到得数据
- (NSString *)pathName; - (NSString *)rootUrl;
pathName表示请求的具体URL路径;rootUrl表示请求的URL
- (AFConstructingBlock)constructingBodyBlock;
当需要上传文件时可以使用
- (void)cancel;
取消当前的NSURLSessionTask对象,也就是取消这次请求
发送一个GET请求
只要分别子类化YiBaseRequest和YiBaseModel,在上层使用就非常简单
//通过GET请求获取用户信息 YiGetUserInfoRequest *getUserInfoRequest=[[YiGetUserInfoRequest alloc] init]; [getUserInfoRequest requestWithSuccess:^(YiBaseModel *model,NSURLSessionTask *task){ NSLog(@"username is %@",((YiUserInfoModel *)model).name); } failure:^(NSError *error,NSURLSessionTask *task){ }];
子类化YiBaseModel为YiUserInfoModel
@interface YiUserInfoModel : YiBaseModel @property(nonatomic,strong) NSString *name; @end
子类化YiBaseRequest为YiGetUserInfoRequest
@implementation YiGetUserInfoRequest -(instancetype)init{ self = [super init]; if (self) { } return self; } -(instancetype)initWithNameId:(NSString *)nameId { self = [super init]; if (self) { [self.getParams setValue:nameId forKey:@"name_id"]; } return self; } - (NSString *)pathName { return @"users/coderyi"; } - (YiHTTPRequestMethod)requestMethod { return YiHTTPRequestMethodGet; } - (YiBaseModel *)responseModelWithData:(id)data { return [[YiUserInfoModel alloc] initWithDictionary:data error:nil]; } @end
发送一个POST请求
//通过POST请求修改用户信息 YiModifyUserInfoRequest *modifyUserInfoRequest=[[YiModifyUserInfoRequest alloc] initWithNameId:@"coderyi"]; [modifyUserInfoRequest requestWithSuccess:^(YiBaseModel *model,NSURLSessionTask *task){ NSLog(@"username is %@",((YiUserInfoModel *)model).name); } failure:^(NSError *error,NSURLSessionTask *task){ }];
子类化YiBaseRequest为YiModifyUserInfoRequest
@implementation YiModifyUserInfoRequest -(instancetype)initWithNameId:(NSString *)nameId { self = [super init]; if (self) { [self.postParams setValue:nameId forKey:@"name_id"]; } return self; } - (NSString *)pathName { return @"users/coderyi"; } - (YiHTTPRequestMethod)requestMethod { return YiHTTPRequestMethodPost; } - (YiBaseModel *)responseModelWithData:(id)data { return [[YiUserInfoModel alloc] initWithDictionary:data error:nil]; } @end
上传图片
//上传一张图片 UIImage *image; YiUploadImageRequest *uploadImageRequest=[[YiUploadImageRequest alloc] initWithImage:image]; [uploadImageRequest requestWithSuccess:^(YiBaseModel *model,NSURLSessionTask *task){ NSLog(@"model is %@",model); } failure:^(NSError *error,NSURLSessionTask *task){ }];
子类化YiBaseRequest为YiUploadImageRequest
@implementation YiUploadImageRequest{ UIImage *_image; } - (id)initWithImage:(UIImage *)image { self = [super init]; if (self) { _image = image; } return self; } - (AFConstructingBlock)constructingBodyBlock { return ^(id formData) { NSData *data = UIImageJPEGRepresentation(_image, 0.9); NSString *name = @"image"; NSString *formKey = @"image"; NSString *type = @"image/jpeg"; [formData appendPartWithFileData:data name:formKey fileName:name mimeType:type]; }; } @end
- 如何测试HTTP请求示例
- 适用于Java的Google HTTP客户端库使用教程 3次下载
- AD常用3D封装库(STEP)下载 370次下载
- AD 2D标准封装库下载 22次下载
- AD PCB封装库下载 0次下载
- 开源网络协议分析器WireShark软件下载 15次下载
- cadence软件PCB封装库 0次下载
- HH常见的PCB封装库相关文件下载 36次下载
- 如何进行Cadence PCB封装库的制作及使用 0次下载
- C++开源库的详细资料合集免费下载
- C++的开源库大全详细资料说明
- 通用封装库(protel/AD版本通用)资料下载 0次下载
- Android开发的各大网络请求库实际案例 4次下载
- powerpcb(pads)封装库下载
- protel封装库protel元件封装库
- 使用NS1串口服务器HTTP模式上传服务器数据 98次阅读
- Vitis加速库:广泛且性能优化的开源库 541次阅读
- 高并发场景下请求合并 292次阅读
- 基于Nginx配置origin限制跨域请求 1162次阅读
- 如何使用 ESP-AT实现HTTP请求 1065次阅读
- HTTP状态码你知道几个 589次阅读
- MongoDB开源文档数据库的安装 965次阅读
- Elasticsearch 8作为开源软件正式发布 2302次阅读
- 详谈一些主流开源数据库及工具 2451次阅读
- Java编程:发送HTTP请求到服务器 2979次阅读
- 一文读懂Http和Https的区别 1991次阅读
- 如何发起 HTTP 请求流程 4827次阅读
- Python如何爬取实时变化的WebSocket数据 3439次阅读
- NASA的开源软件是什么?NASA的开源软件的详细分析 7186次阅读
- HTTP协议的使用方式和设计原理讲解 4113次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多