登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

XDNetworking

[复制链接]
来自: dddadagg 分类: iOS精品源码 上传时间: 2016-8-8 00:57:24
Tag:Networking 网络请求 网络 请求

项目介绍:

XDNetworking

简介:基于AFNetworking3.0封装网络请求功能,API面向业务层更友好,基础功能包括GET、POST、下载、单文件上传、多文件上传、取消网络请求。此外拓展出缓存功能,缓存分为内存缓存和磁盘缓存。
使用:
将XDNetworking包拉进工程
[Objective-C] 查看源文件 复制代码
#import "XDNetworking.h"

GET请求
[Objective-C] 查看源文件 复制代码
/**
 *  GET请求
 *
 *  @param url              请求路径
 *  @param cache            是否缓存
 *  @param params           拼接参数
 *  @param progressBlock    进度回调
 *  @param successBlock     成功回调
 *  @param failBlock        失败回调
 *
 *  @return 返回的对象中可取消请求
 */
+ (XDURLSessionTask *)getWithUrl:(NSString *)url
                            cache:(BOOL)cache
                           params:(NSDictionary *)params
                    progressBlock:(XDGetProgress)progressBlock
                     successBlock:(XDResponseSuccessBlock)successBlock
                        failBlock:(XDResponseFailBlock)failBlock;


POST请求
[Objective-C] 查看源文件 复制代码
/**
 *  POST请求
 *
 *  @param url              请求路径
 *  @param cache            是否缓存
 *  @param params           拼接参数
 *  @param progressBlock    进度回调
 *  @param successBlock     成功回调
 *  @param failBlock        失败回调
 *
 *  @return 返回的对象中可取消请求
 */
+ (XDURLSessionTask *)postWithUrl:(NSString *)url
                             cache:(BOOL)cache
                            params:(NSDictionary *)params
                     progressBlock:(XDPostProgress)progressBlock
                      successBlock:(XDResponseSuccessBlock)successBlock
                         failBlock:(XDResponseFailBlock)failBlock;


下载请求
[Objective-C] 查看源文件 复制代码
/**
 *  文件下载
 *
 *  @param url           下载文件接口地址
 *  @param progressBlock 下载进度
 *  @param successBlock  成功回调
 *  @param failBlock     下载回调
 *
 *  @return 返回的对象可取消请求
 */
+ (XDURLSessionTask *)downloadWithUrl:(NSString *)url
                        progressBlock:(XDDownloadProgress)progressBlock
                         successBlock:(XDDownloadSuccessBlock)successBlock
                            failBlock:(XDDownloadFailBlock)failBlock;


文件上传
[Objective-C] 查看源文件 复制代码
/**
 *  文件上传
 *
 *  @param url              上传文件接口地址
 *  @param data             上传文件数据
 *  @param type             上传文件类型
 *  @param name             上传文件服务器文件夹名
 *  @param mimeType         mimeType
 *  @param progressBlock    上传文件路径
 *  @param successBlock     成功回调
 *  @param failBlock        失败回调
 *
 *  @return 返回的对象中可取消请求
 */
+ (XDURLSessionTask *)uploadFileWithUrl:(NSString *)url
                                fileData:(NSData *)data
                                    type:(NSString *)type
                                    name:(NSString *)name
                                mimeType:(NSString *)mimeType
                           progressBlock:(XDUploadProgressBlock)progressBlock
                            successBlock:(XDResponseSuccessBlock)successBlock
                               failBlock:(XDResponseFailBlock)failBlock;


多文件上传
[Objective-C] 查看源文件 复制代码
/**
 *  多文件上传
 *
 *  @param url           上传文件地址
 *  @param datas         数据集合
 *  @param type          类型
 *  @param name          服务器文件夹名
 *  @param mimeType      mimeTypes
 *  @param progressBlock 上传进度
 *  @param successBlock  成功回调
 *  @param failBlock     失败回调
 *
 *  @return 任务集合
 */
+ (NSArray *)uploadMultFileWithUrl:(NSString *)url
                         fileDatas:(NSArray *)datas
                              type:(NSString *)type
                              name:(NSString *)name
                          mimeType:(NSString *)mimeTypes
                     progressBlock:(XDUploadProgressBlock)progressBlock
                      successBlock:(XDMultUploadSuccessBlock)successBlock
                         failBlock:(XDMultUploadFailBlock)failBlock;


取消所有网络请求
[Objective-C] 查看源文件 复制代码
+ (void)cancleAllRequest;


取消单个请求
[Objective-C] 查看源文件 复制代码
+ (void)cancelRequestWithURL:(NSString *)url;


获取缓存大小
[Objective-C] 查看源文件 复制代码
/**
 *  获取缓存大小
 *
 *  @return 缓存大小
 */
+ (unsigned long long)totalCacheSize;


清理缓存
[Objective-C] 查看源文件 复制代码
/**
 *  清除所有缓存
 */
+ (void)clearTotalCache;


自动清理缓存
[Objective-C] 查看源文件 复制代码
    //每次网络请求的时候,检查此时磁盘中的缓存大小,如果超过阈值,则清理所有缓存
    //未来优化点:1、这里到时会做进一步优化,到时会有两种清理策略,一种基于时间维度,一种基于缓存大小,
    //          2、清理也不会清理全部,会采取LRU算法来淘汰在磁盘中价值最低的缓存
    if ([self totalCacheSize] > CACHEMAXSIZE) [self clearTotalCache];


使用技巧:
1.对于cache与否,到时大家针对自己的业务数据的特征来决定是否开启cache,即时性或时效性的数据建议不开启缓存,一般建议开启,开启缓存后会回调两次,第一次获取是缓存数据,第二次获取的是最新的网络数据;
2.具体使用的时候,建议面向业务层再封装一次Service层或者将网络请求写进MVVM的viewModel中,向controller暴露只面向业务的参数。


未来拓展:
1.为缓存添加相应的缓存淘汰算法LRU;
2. 添加请求缓存策略;
3. 再封装面向业务更友好的manager,管理业务层的API,使其方便在不同网络环境下切换(测试环境与正式环境......)



DEMO 直接下载:

相关源码推荐:

我来说两句
*滑动验证:
所有评论(31)
nan1344576552 2016-11-26 11:59:21
我只是路过打酱油的。
回复
sunww753 2016-11-28 16:44:36
强烈支持楼主ing……
回复
code4app热心网友 2016-11-29 11:53:05
正需要啊,感谢楼主无私分享!
回复
liyongbin 2016-12-8 15:57:05
淡定,淡定,淡定……
回复
code4app热心网友 2016-12-13 14:52:58
感谢分享,Code4App有你更精彩:)
回复
code4app热心网友 2016-12-13 14:53:25
正需要啊,感谢楼主无私分享!
回复
houyan2016 2016-12-15 14:00:31
我只是路过打酱油的。
回复
code4app热心网友 2016-12-15 15:51:48
正需要啊,感谢楼主无私分享!
回复
桔梗花963 2016-12-16 14:27:25
楼主用心了,内容非常精彩。
回复
桔梗花963 2016-12-16 14:28:11
很给力,Code4App有你更精彩!
回复
1234
提取码:  下载次数:72 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
2038 0 72
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表