欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-15 20:08:58
ios 使用block二次封装afnetworking 3.0详解 现在我们网络请求大都用第三方工具—–afnetworking; 其中,afnetworking...

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);
  }];

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