基于猿题库网络请求再次封装
下载地址: https://github.com/weibo1314/WB_NeiApiManager
WB_NetApiManager 介绍
=====================
最近闲来无事,整理了前几个项目做得积累的经验...基于YTKNetwork进行再封装,实现TYKNetwork一些基本的使用
因为没有服务器..我就不做demo了 封装的网络请求较为简单想要测一下很简单...并且经历了好几个项目的测试的,,,这个其实就是把之前项目的代码整理起来的...用起来不会出什么问题
入门级封装 各位大大有什么好的意见和建议请联系我
QQ 413151868
## WB_NetApiManager 基本组成
#########注意事项###########
1.PCH要引用 #import "WB_NetApiMacro.h"
2.如果 是http请求 请在info.plist里进行修改 具体修改自行百度
3.AFNetworking可以使用cocopod 但是YTKNetwork不要使用...因为我对YTKNetwork部分代码进行修改例如适配text/html..打印获取的数据等
#pragma mark -----代码
-------------------------
platform :ios, ‘8.0’
target '项目名称' do
pod 'AFNetworking', '~> 3.0'
end
----------------------------------
WB_NetApiManager 包括以下几个基本的类:
* WB_ArgumentFilterProtocol 类:用于配置全局参数,比如版本号
* WB_BaseRequest 类:网络请求基类 所有的网络请求继承这个方法
* WB_Request 类:继承WB_BaseRequest类 获取数据API的基类,所有获取数据的API 都需要继承于这个方法
* WB_UploadImageRequest 类:上传图片API的基类,所有上传图片的API 都需要继承于这个方法 如果批量上传图片 请使用下面的类
* WB_BatchUploadImgRequest 类:批量上传图片api
* WB_NetApiConstant 类 : 定义全局常量 初始化网络请求api
* WB_NetApiMacro : 配置公共参数
下面简单介绍下网络获取和批量上传图片的使用
### WB_NetApiMacro
配置公共参数
1 请求方式 GET POST
2 统一管理接口地址..方便正式服务器和测试服务器之间的切换 方便开发
3 打印输入的宏写在这里面
### WB_NetApiConstant 类
程序运行是要打开api
```objectivec
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
//初始化网络请求
[self initRequest];
[self initWindow];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark ————— 初始化网络请求 —————
-(void)initRequest{
[WB_NetApiConstant sharedInstance];
}
```
### WB_Request 类 获取接口数据继承此类
看代码
1 创建api继承与此类 初始化方法带参数
```objectivec
#import "WB_Request.h"
@interface HomeNetApi : WB_Request
-(id)initWithPageNum:(NSInteger )pagenum;
@end
```
2 配置接口地址和传参
```objectivec
#import "HomeNetApi.h"
@implementation HomeNetApi
{
NSInteger _pagenum;
}
-(id)initWithPageNum:(NSInteger )pagenum
{
if (self = [super init])
{
_pagenum = pagenum;
}
return self;
}
###########接口地址#########
-(NSString *)requestUrl
{
return @"home/index/start";
}
#########传参#############
-(id)requestArgument
{
return @{
@"pagenum" :@(_pagenum),
};
}
@end
```
3 调用api 开始网络请求
```objectivec
HomeNetApi *api = [[HomeNetApi alloc] initWithPageNum:0];
[api startWithCompletionBlockWithSuccess:^(__kindof YTKBaseRequest * _Nonnull request) {
} failure:^(__kindof YTKBaseRequest * _Nonnull request) {
}];
```
### WB_BatchUploadImgRequest 类 批量上传图片
批量上传图片只有一个方法..实现就好 如果有获取每一张上传图片的上传进度...有一个代理实现就可以实时获取上传进度
看代码
1 实现初始化方法 : -(instancetype)initWithImgArray:(NSMutableArray<UIImage *> *)imgArray;
```objectivec
NSMutableArray *arr = [NSMutableArray arrayWithObject:_img.image];
[arr addObject:_second.image];
WB_BatchUploadImgRequest *api = [[WB_BatchUploadImgRequest alloc] initWithImgArray:arr];
api.mDelegate = self;
[api startWithCompletionBlockWithSuccess:^(YTKBatchRequest * _Nonnull batchRequest) {
NSLog(@"succeed");
//图片上传成功
NSArray *requests = batchRequest.requestArray;
//获取每张图片返回的图片名
WB_UploadImageRequest *api = (WB_UploadImageRequest *)requests[0];
[api getContent];
} failure:^(YTKBatchRequest * _Nonnull batchRequest) {
NSLog(@"failed");
}];
```
2 代理获取上传进度 实现代理方法 -(void)upBatchRequestProgressWithApiTag:(NSInteger )apiTag andProgress:(NSProgress *)progress;
```objectivec
-(void)upBatchRequestProgressWithApiTag:(NSInteger )apiTag andProgress:(NSProgress *)progress
{
NSLog(@"第%ld张图片加载了%.2f------------",apiTag,progress.fractionCompleted);
}
```
## 其他说明
请求头 在WB_Request类里第32行添加请求头
网络请求的处理和断网提醒在YTKNetworkAgent的第670-700行
关于数据返回要提一句 为了方便开发 网络请求成功会返回对应的jsonStr和相对应的字典转成的属性
创建model后吧需要的属性粘贴进去就好..大大节省了开发时间
下面是打印的效果 会打印出每一个字段对应的属性 用的是否直接粘贴就好
``` 控制台
2017-09-28 12:05:13.700320+0800 WB_iOS_FrameWork[3677:299879]
@property (nonatomic ,strong) NSString *time;
@property (nonatomic ,strong) NSString *appModel;
@property (nonatomic ,strong) NSString *title;
@property (nonatomic ,strong) NSString *name;
@property (nonatomic ,strong) NSString *adPic;
@property (nonatomic ,strong) NSString *seller_id;
2017-09-28 12:05:13.700637+0800 WB_iOS_FrameWork[3677:299879]
@property (nonatomic ,strong) NSString *title;
@property (nonatomic ,strong) NSString *icon;
@property (nonatomic ,strong) NSString *type;
```
以上几个示例代码在 Demo 工程中也可获得。
基于猿题库网络请求再次封装相关推荐
- 猿题库 网络框架 入门认识
猿题库网址:https://github.com/yuantiku/YTKNetwork/blob/master/Docs/BasicGuide_cn.md YTKBaseRequest 主要是针对请 ...
- [IOS]猿题库网络json数据缓存
使用JSON 数据缓存的初衷 是提高用户体验,用数据缓存代替loading动画. 整个一个流程是 进入视图控制器 加载缓存-向服务器发送数据请求--更新数据 首先 pods 安装猿题库 或者从外部直 ...
- 猿题库 iOS 客户端架构设计-唐巧
序 猿题库是一个拥有数千万用户的创业公司,从20013年题库项目起步到2015年,团队保持了极高的生产效率,使我们的产品完成了五个大版本和数十个小版本的高速迭代. 在如此快速的开发过程中,如何保证代码 ...
- 实践干货!猿题库 iOS 客户端架构设计
序 猿题库是一个拥有数千万用户的创业公司,从2013年题库项目起步到2015年,团队保持了极高的生产效率,使我们的产品完成了五个大版本和数十个小版本的高速迭代.在如此快速的开发过程中,如何保证代码的质 ...
- 猿题库 iOS 客户端架构设计
推荐序 我几周前写过一篇文章,叫 <被误解的 MVC 和被神化的 MVVM>,其中的很多思想是和本文的作者 Lancy 交流获得的.当时很多人回复问:能直接上猿题库的代码吗?这次 Lanc ...
- android系统开发题库,基于Android题库系统设计与实现.doc
基于Android题库系统设计与实现 基于Android题库系统设计与实现 摘 要:借助Android平台,采用SQLite轻量级数据库,以TextView和ImageView实现图文并茂的方法设计了 ...
- 猿辅导python辅导老师_【猿题库/猿辅导课程设计面试】python 教研不推荐去猿辅导-看准网...
[整个流程] 一面:上午公众号投递简历,下午收到电话,预约一面时间,然后收到短信+邮件,要求添加一面hr微信,最后和hr确认好面试时间.hr到时会提前拉群,一面为在线微信视频面试,3-4位求职者一起面 ...
- 带你一步步剖析Retrofit-源码解析:一款基于-OkHttp-实现的网络请求框架
int question = value.indexOf('?'); if (question != -1 && question < value.length() - 1) { ...
- android多媒体编程题库,android 仿猿题库答题UI
需要做类似猿题库答题板效果,网上没有找到Android的,就自己写一个,浮层上滑底层UI跟着改变的UI public class DragLinearLayoutextends LinearLayou ...
最新文章
- 记一次数据库查询语句的优化
- android 设置自动弹框,安卓开发 弹出对话框,然后自动消失
- pandas中合并数据集
- PHP 读取 QQ ip纯真数据库 详解
- JS调用webservice的两种方式
- Ubuntu系统搭建Discus论坛
- 游戏开发全免费下载网站:源代码插件模型场景全部免费
- 驭龙HIDS的简介,它开源了
- 基于GAN的语音转换技术及语音合成TTS
- 将 字母 转换数字(1-26)
- 微信小程序|使用小程序制作一个核酸检测点查询工具
- 计算机图形学(1)基本图形算法
- 使用JAVA进行ad域身份验证常用属性详解
- spark-3.1.2兼容多版本hive
- [iOS开发]iOS中的Hash
- css3动画 提交成功圆圈画对勾
- 微信解封百度春晚红包
- 第七十章 SQL函数 $JUSTIFY
- vue多个关键字高亮
- 多线程与并发 - Java 8 CompletableFuture 异步多线程