IOS 使用Block二次封装AFNetworking 3.0详解

2025-05-29 0 24

IOS 使用Block二次封装AFNetworking 3.0详解

现在我们网络请求大都用第三方工具—–AFNetworking

其中,AFNetworking 3.0 是对 NSURLSession 进行的封装,简化了很多步骤,但是在现实开发中,我们可以将AFNetworking再次封装到一个类中,这样通过传去URL和Parameters 就可以进行网络请求。

具体实现步骤:

前期准备:导入AFNetworking第三方框架

1、新建一个工具类,继承自NSObject;

2、在.h 中宏定义两个block,用来回调请求结果;

?

1

2

3

4
//宏定义成功block 回调成功后得到的信息

typedef void (^HttpSuccess)(id data);

//宏定义失败block 回调失败信息

typedef void (^HttpFailure)(NSError *error);

3、使用类方法创建两个GET 和 POST请求函数;

?

1

2

3

4

5

6
//get请求

+(void)getWithUrlString:(NSString *)urlString success:(HttpSuccess)success failure:(HttpFailure)failure;

//post请求

+(void)postWithUrlString:(NSString *)urlString parameters:(NSDictionary *)parameters success:(HttpSuccess)success failure:(HttpFailure)failure;

4、在.m 中#import “AFNetworking/AFNetworking.h”,并实现.h中定义的两个函数;

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
//GET请求

+(void)getWithUrlString:(NSString *)urlString success:(HttpSuccess)success failure:(HttpFailure)failure{

//创建请求管理者

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

//内容类型

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html", nil];

//get请求

[manager GET:urlString parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {

//数据请求的进度

} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {

success(responseObject);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

failure(error);

}];

}

//POST请求

+(void)postWithUrlString:(NSString *)urlString parameters:(NSDictionary *)parameters success:(HttpSuccess)success failure:(HttpFailure)failure{

//创建请求管理者

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

//

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

//内容类型

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html", nil];

//post请求

[manager POST:urlString parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {

//数据请求的进度

} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {

success(responseObject);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

failure(error);

}];

}

使用步骤:

1、导入自定义的工具类名;

2、调用自定义的方法;

?

1

2

3

4

5

6
[XMAFNRequestTools getWithUrlString:url success:^(id data) {

self.array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments | NSJSONReadingMutableLeaves error:nil];

NSLog(@"%@",self.array);

} failure:^(NSError *error) {

NSLog(@"%@",error);

}];

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 IOS 使用Block二次封装AFNetworking 3.0详解 https://www.kuaiidc.com/91118.html

相关文章

发表评论
暂无评论