AFNetworking在iOS网络请求第三方库中占据着半壁江山,前段时间将AFNetworking进行了3.0版本的迁移,运用面向对象的设计将代码进行封装整合,这篇文章主要为还在寻找AFNetworking集成代码或者准备3.0迁移的各位童鞋们提供思路,同时自定义了字典模型转换方法,需要的朋友也可以作为参考,还望各位老司机批评指正!先上代码框架图:

一劳永逸的解决AFNetworking3.0网络请求问题

1、DB数据访问层,在AFNetworkingManager中我将AFNetworking的GET/POST/DELETE/PUT方法封装,提供了以下接口:

 1 /**
 2  *  get方式请求数据
 3  *
 4  *  @param strUrl          api地址
 5  *  @param headers         头部信息
 6  *  @param params          可变参数信息
 7  *  @param class           返回数据模型类
 8  *  @param block           block结果回调
 9  *  @param blockError      block错误回调
10  *  @param blockTimeOut    block超时回调
11  */
12 -(void)getDataFromUrl:(NSString *)strUrl
13               headers:(NSDictionary *)headers
14                params:(NSDictionary *)params
15                 class:(Class)class
16             block:(CompletionLoad)block
17             blockError:(void (^)(JsonCommonResultBase *))blockError
18             blockTimeOut:(TimeOutCompletion)blockTimeOut;
19 
20 /**
21  *  post方式更新数据
22  *
23  *  @param strUrl          api地址
24  *  @param headers         头部信息
25  *  @param params          可变参数信息
26  *  @param class           返回数据模型类
27  *  @param block           block结果回调
28  *  @param blockError      block错误回调
29  *  @param blockTimeOut    block超时回调
30  */
31 - (void)postDataFromUrl:(NSString*)strUrl
32                 headers:(NSDictionary*)headers
33                  params:(NSDictionary*)params
34                   class:(Class)class
35             block:(CompletionLoad)block
36             blockError:(void(^)(JsonCommonResultBase *))blockError
37             blockTimeOut:(TimeOutCompletion)blockTimeOut;
38 
39 /**
40  *  put方式更新数据
41  *
42  *  @param strUrl          api地址
43  *  @param headers         头部信息
44  *  @param params          可变参数信息
45  *  @param class           返回数据模型类
46  *  @param block           block结果回调
47  *  @param blockError      block错误回调
48  *  @param blockTimeOut    block超时回调
49  */
50 - (void)putDataFromUrl:(NSString*)strUrl
51                headers:(NSDictionary*)headers
52                 params:(NSDictionary*)params
53                  class:(Class)class
54             block:(CompletionLoad)block
55             blockError:(void(^)(id))blockError
56             blockTimeOut:(TimeOutCompletion)blockTimeOut;
57 
58 /**
59  *  delete方式删除数据
60  *
61  *  @param strUrl          api地址
62  *  @param headers         头部信息
63  *  @param params          可变参数信息
64  *  @param class           返回数据模型类
65  *  @param block           block结果回调
66  *  @param blockError      block错误回调
67  *  @param blockTimeOut    block超时回调
68  */
69 - (void)deleteDataFromUrl:(NSString*)strUrl
70                   headers:(NSDictionary*)headers
71                    params:(NSDictionary*)params
72                     class:(Class)class
73             block:(CompletionLoad)block
74             blockError:(void(^)(JsonCommonResultBase *))blockError
75             blockTimeOut:(TimeOutCompletion)blockTimeOut;
76 
77 /**
78  *  post方式更新数据(上传文件如图片)
79  *
80  *  @param strUrl          api地址
81  *  @param headers         头部信息
82  *  @param params          可变参数信息
83  *  @param dataFiles       文件数据
84  *  @param class           返回数据模型类
85  *  @param block           block结果回调
86  *  @param progressBlock   block进度回调
87  *  @param blockError      block错误回调
88  *  @param blockTimeOut    block超时回调
89  */
90 - (void)uploadDataFromUrl:(NSString *)strUrl
91                   headers:(NSDictionary *)headers
92                    params:(NSDictionary *)params
93                 dataFiles:(NSArray *)dataFiles
94             progressBlock:(LoadProgress)progressBlock
95                     block:(CompletionLoad)block
96                     class:(Class)class
97             blockError:(void (^)(JsonCommonResultBase *))blockError
98             blockTimeOut:(TimeOutCompletion)blockTimeOut;
AFNetworking封装

相关文章: