- 一直以来都是的完全的block实现网络层的封装,知道看了这篇文章,确实存在了页面已经返回来请求都还在,所以使用了协议来封装,感觉挺不错的,所以分享一下.
- 如果没有耐心看完可以直接拉到底部demo地址.
实现
- 在项目的info.plist加入:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<true/>
</dict>
- 使用cocoapods导入AFNetworking
- 封装的结构入下图:
LXKBaseNetwork
LXKBaseNetwork.h
- LXKBaseNetwork主要是对Get和Post请求的枚举值,请求成功和失败的block回调,上传和下载进度的block的回调,如下图:
- LXKBaseNetwork继承AFHTTPSessionManager,封装了单例,get和post请求,多图的上传(我们后台支持单图也多图传递),入下图:
LXKBaseNetwork.m
- 单例的实现:
- get和post请求的实现:
LXKNetworkProtocol
- 主要是对请求的类型,请求的成功,网络失败,状态不正确的失败的封装,如下图:
LXKNetworkModel
- 在这儿主要是指定URL地址,请求的类型,可以有很多,只是因为项目原因只要了这两个,如下图:
LXKNetworkHelper
- 对于请求的二次封装,封装了提示加载的框,但是在这个例子里面去掉了提示框这一部分.如下图:
- 对于.m文件的实现,截取了get和post请求,和对于模型参数的处理,如下图:
在基类里面的使用
- LXKBaseViewController是我的基类,将方法封装在基类里,如下图:
- .m主要是实现,这个是父类,可以在把请求网络错误和状态不唯一都在父类里面实现占位页面或者提示,在子类只需指定参数和接口类型就可以使用了,如果可以也只需要实现请求成功的数据,在子类调用如下图:
使用需要的补充
- 使用的时候请补充LXKNetworkHelper中API_PREFIX前缀,模型的中指定的URL地址链接,如下图:
demo网址:https://github.com/vistaLin/-LXKNetworkPotocolDemo-