下载地址:  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 工程中也可获得。

基于猿题库网络请求再次封装相关推荐

  1. 猿题库 网络框架 入门认识

    猿题库网址:https://github.com/yuantiku/YTKNetwork/blob/master/Docs/BasicGuide_cn.md YTKBaseRequest 主要是针对请 ...

  2. [IOS]猿题库网络json数据缓存

    使用JSON 数据缓存的初衷 是提高用户体验,用数据缓存代替loading动画. 整个一个流程是 进入视图控制器 加载缓存-向服务器发送数据请求--更新数据 首先  pods 安装猿题库 或者从外部直 ...

  3. 猿题库 iOS 客户端架构设计-唐巧

    序 猿题库是一个拥有数千万用户的创业公司,从20013年题库项目起步到2015年,团队保持了极高的生产效率,使我们的产品完成了五个大版本和数十个小版本的高速迭代. 在如此快速的开发过程中,如何保证代码 ...

  4. 实践干货!猿题库 iOS 客户端架构设计

    序 猿题库是一个拥有数千万用户的创业公司,从2013年题库项目起步到2015年,团队保持了极高的生产效率,使我们的产品完成了五个大版本和数十个小版本的高速迭代.在如此快速的开发过程中,如何保证代码的质 ...

  5. 猿题库 iOS 客户端架构设计

    推荐序 我几周前写过一篇文章,叫 <被误解的 MVC 和被神化的 MVVM>,其中的很多思想是和本文的作者 Lancy 交流获得的.当时很多人回复问:能直接上猿题库的代码吗?这次 Lanc ...

  6. android系统开发题库,基于Android题库系统设计与实现.doc

    基于Android题库系统设计与实现 基于Android题库系统设计与实现 摘 要:借助Android平台,采用SQLite轻量级数据库,以TextView和ImageView实现图文并茂的方法设计了 ...

  7. 猿辅导python辅导老师_【猿题库/猿辅导课程设计面试】python 教研不推荐去猿辅导-看准网...

    [整个流程] 一面:上午公众号投递简历,下午收到电话,预约一面时间,然后收到短信+邮件,要求添加一面hr微信,最后和hr确认好面试时间.hr到时会提前拉群,一面为在线微信视频面试,3-4位求职者一起面 ...

  8. 带你一步步剖析Retrofit-源码解析:一款基于-OkHttp-实现的网络请求框架

    int question = value.indexOf('?'); if (question != -1 && question < value.length() - 1) { ...

  9. android多媒体编程题库,android 仿猿题库答题UI

    需要做类似猿题库答题板效果,网上没有找到Android的,就自己写一个,浮层上滑底层UI跟着改变的UI public class DragLinearLayoutextends LinearLayou ...

最新文章

  1. 记一次数据库查询语句的优化
  2. android 设置自动弹框,安卓开发 弹出对话框,然后自动消失
  3. pandas中合并数据集
  4. PHP 读取 QQ ip纯真数据库 详解
  5. JS调用webservice的两种方式
  6. Ubuntu系统搭建Discus论坛
  7. 游戏开发全免费下载网站:源代码插件模型场景全部免费
  8. 驭龙HIDS的简介,它开源了
  9. 基于GAN的语音转换技术及语音合成TTS
  10. 将 字母 转换数字(1-26)
  11. 微信小程序|使用小程序制作一个核酸检测点查询工具
  12. 计算机图形学(1)基本图形算法
  13. 使用JAVA进行ad域身份验证常用属性详解
  14. spark-3.1.2兼容多版本hive
  15. [iOS开发]iOS中的Hash
  16. css3动画 提交成功圆圈画对勾
  17. 微信解封百度春晚红包
  18. 第七十章 SQL函数 $JUSTIFY
  19. vue多个关键字高亮
  20. 多线程与并发 - Java 8 CompletableFuture 异步多线程

热门文章

  1. selenium模拟登陆淘宝
  2. JLX256160 iic 带字库
  3. 2021年安全员-C证(安徽省)考试APP及安全员-C证(安徽省)考试试卷
  4. Python打砖块代码
  5. javaweb给数据进行设置饼图,折线图,柱状图
  6. 51单片机静态八位数码管显示
  7. iOS开发,获取手机型号,系统版本号
  8. html中negative属性,关于negative的英语句子
  9. Redis理解内存《Redis开发与运维读书笔记》
  10. 苹果xr邮件无法连接服务器,iPhone XR手机怎么添加QQ邮箱?苹果XR添加QQ邮箱的方法...