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

 更新时间:2017年02月15日 09:03:12   投稿:lqh  
这篇文章主要介绍了IOS 使用Block二次封装AFNetworking 3.0详解的相关资料,需要的朋友可以参考下

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

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

相关文章

  • ios开发加载webview显示进度条实例

    ios开发加载webview显示进度条实例

    本篇文章主要介绍了ios开发加载webview显示进度条实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 分享一些iOS开发实用的小技巧

    分享一些iOS开发实用的小技巧

    这篇文章主要给大家分享了一些iOS开发实用的小技巧,这些小技巧在大家开发iOS的时候还是相当实用,有需要的朋友们下面来一起看看吧。
    2016-09-09
  • iOS UIWebView实现禁止用户复制剪切功能

    iOS UIWebView实现禁止用户复制剪切功能

    这篇文章主要给大家介绍了iOS中的UIWebView如何实现禁止用户复制剪切的功能,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
    2016-11-11
  • iOS archive保存图片到本地的方法

    iOS archive保存图片到本地的方法

    这篇文章主要为大家详细介绍了iOS archive保存图片到本地的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • iOS应用开发中实现页面跳转的简单方法笔记

    iOS应用开发中实现页面跳转的简单方法笔记

    这篇文章主要介绍了iOS应用开发中实现页面跳转的简单方法笔记,代码基于传统的Objective-C,需要的朋友可以参考下
    2016-02-02
  • 详解iOS App中调用AVAudioPlayer播放音频文件的用法

    详解iOS App中调用AVAudioPlayer播放音频文件的用法

    这篇文章主要介绍了iOS App中调用AVAudioPlayer播放音频文件的用法,AVAudioPlayer仅能播放本地文件而不能添加网络源,实例代码为Objective-C,需要的朋友可以参考下
    2016-03-03
  • iOS实现手势解锁操作

    iOS实现手势解锁操作

    这篇文章主要为大家详细介绍了iOS实现手势解锁操作功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • IOS中对Url进行编码和解码示例

    IOS中对Url进行编码和解码示例

    本篇文章主要介绍了IOS中对Url进行编码和解码示例,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • iOS创建对象的不同姿势详解

    iOS创建对象的不同姿势详解

    这篇文章主要介绍了iOS创建对象的不同姿势,文中介绍的很详细,对大家具有一定的参考价值,有需要的朋友们下面来一起学习学习吧。
    2017-02-02
  • 实例讲解iOS应用开发中UIPickerView滚动选择栏的用法

    实例讲解iOS应用开发中UIPickerView滚动选择栏的用法

    这篇文章主要介绍了iOS应用开发中UIPickerView滚动选择栏的用法,示例代码基于传统的Objective-C,需要的朋友可以参考下
    2016-04-04

最新评论