首页 > 系统 > iOS > 正文

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

2020-07-26 02:56:18
字体:
来源:转载
供稿:网友

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

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

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

具体实现步骤:

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

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

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

//宏定义成功block 回调成功后得到的信息typedef void (^HttpSuccess)(id data);//宏定义失败block 回调失败信息typedef void (^HttpFailure)(NSError *error);

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

//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中定义的两个函数;

//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、调用自定义的方法;

  [XMAFNRequestTools getWithUrlString:url success:^(id data) {    self.array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments | NSJSONReadingMutableLeaves error:nil];    NSLog(@"%@",self.array);  } failure:^(NSError *error) {    NSLog(@"%@",error);  }];

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表