1、AFNetworking简介

AFNetworking是一个在iOS开发中使用非常多的轻量级网络开源库
适用于iOS以及Mac OS X。它构建于在(Apple iOS开发文档) NSURLConnection ,  NSOperation , 以及其他熟悉的Foundation技术之上。
它拥有良好的架构,丰富的api,以及模块化构建方式,使得使用起来非常轻松。
官方链接http://cocoadocs.org/docsets/AFNetworking/1.3.0/

2、AFNetworking使用(使用CocoaPods管理)

2.1网络监测

 1 #import "ViewController.h"
 2 // 网络请求的头文件  3 #import <AFNetworking.h>  4 @interface ViewController ()  5 {  6 /// 进行网络监测判断的BOOL值  7  BOOL isOpen;  8 }  9 @end 10 11 @implementation ViewController 12 13 - (void)viewDidLoad { 14  [super viewDidLoad]; 15 16 } 17 18 #pragma mark - 实时监测当前网络状态 19 - (IBAction)networkMonitoringAction:(id)sender { 20 if (!isOpen) { 21 // 打开网络监测 22  [[AFNetworkReachabilityManager sharedManager] startMonitoring]; 23 isOpen = YES; 24 } else { 25 // 关闭网络监测 26  [[AFNetworkReachabilityManager sharedManager] stopMonitoring]; 27 isOpen = NO; 28  } 29 // 判断当前是wifi状态、3g、4g还是网络不可用状态 30 [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 31 /** 32  AFNetworkReachabilityStatusUnknown = -1, // 未知网络 33  AFNetworkReachabilityStatusNotReachable = 0, // 没有网络连接 34  AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3g,4g 35  AFNetworkReachabilityStatusReachableViaWiFi = 2, // WIFI状态 36 */ 37 switch (status) { 38 case AFNetworkReachabilityStatusUnknown: 39 NSLog(@"当前网络处于未知状态"); 40 break; 41 case AFNetworkReachabilityStatusNotReachable: 42 NSLog(@"当前没有网络连接"); 43 break; 44 case AFNetworkReachabilityStatusReachableViaWiFi: 45 NSLog(@"当前处于WIFI状态"); 46 break; 47 case AFNetworkReachabilityStatusReachableViaWWAN: 48 NSLog(@"当前处于移动网络状态,请您注意您的流量"); 49 break; 50 default: 51 break; 52  } 53  }]; 54 55 }

2.2 Get、Post请求,网络加载时"菊花"的设置

 1 #import "ViewController.h"
 2 // 网络请求的头文件  3 #import <AFNetworking.h>  4 #import <AFNetworkActivityIndicatorManager.h>  5 @interface ViewController ()  6 /// 用于网络请求的session对象  7 @property (nonatomic, strong) AFHTTPSessionManager *session;  8  9 @end 10 11 @implementation ViewController 12 13 - (void)viewDidLoad { 14  [super viewDidLoad]; 15 // 单例 初始化session对象 16 self.session = [AFHTTPSessionManager manager]; 17 // 设置请求返回支持的文件类型 18 self.session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"application/x-json",@"text/html", nil]; 19 20 // 转圈圈的菊花默认是关闭的,需要手动打开,在网络慢的情况下请求数据时,手机左上角就会出现转圈圈的菊花 21 [AFNetworkActivityIndicatorManager sharedManager].enabled = YES; 22 } 23 24 #pragma mark - get网络请求 25 - (IBAction)getRequestAction:(id)sender { 26 /** 27  参数1:get请求的网址 28  参数2:拼接的参数,get请求不需要 29  参数3:当前进度,下载时常用,block传进来的参数downloadProgress就是下载进度 30  参数4:请求成功时调用的block,responseObject是请求到的数据 31  参数5:请求失败时调用的block 32 */ 33 [self.session GET:@"http://api.yhouse.com/m/city/dynmiclist" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) { 34 NSLog(@"下载进度"); 35 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 36 // 打印请求到的数据 37 NSLog(@"请求成功%@", responseObject); 38 // 解析数据代码写在这里 39 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 40 NSLog(@"请求失败"); 41  }]; 42 } 43 #pragma mark - post网络请求(表单上传) 44 - (IBAction)postRequestAction:(id)sender { 45 // body体 46 /*{ 47  do = "pri_memberlist"; 48  "member_id" = zpHr2dsRvQQxYJxo2; 49  "workspace_id" = ILfYpE4Dhs2gWcuQx; 50  }*/ 51 52 /** 53  参数1:post请求的网址 54  参数2:拼接的body体 55  参数3:当前上传进度,block传进来的参数uploadProgress就是上传进度 56  参数4:请求成功时调用的block,responseObject是请求到的数据 57  参数5:请求失败时调用的block 58 */ 59 NSString *urlStr = @"http://m.taskwedo.com/API/wedo1/wedo.php"; 60 NSMutableDictionary *dataDic = [NSMutableDictionary dictionary]; 61 [dataDic setValue:@"pri_memberlist" forKey:@"do"]; 62 [dataDic setValue:@"zpHr2dsRvQQxYJxo2" forKey:@"member_id"]; 63 [dataDic setValue:@"ILfYpE4Dhs2gWcuQx" forKey:@"workspace_id"]; 64 65 [self.session POST:urlStr parameters:dataDic progress:^(NSProgress * _Nonnull uploadProgress) { 66 NSLog(@"上传进度"); 67 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 68 NSLog(@"请求成功%@", responseObject); 69 // 解析数据代码写在这里 70 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 71 NSLog(@"请求失败"); 72 }]; 73 } 

转载于:https://www.cnblogs.com/tabu3154/p/5840890.html

第三方类AFNetworking相关推荐

  1. Thinkphp 零散知识点(caa/js路径,引入第三方类,ajax返回,session/cookie)

    一.关于JS和CSS路径问题 1.找路径是从入口文件index.php来找的,而不是从文件本身所在位置来找, 因为我们访问时是访问的入口文件 2.在存放JS和CSS的时候可以放到public文件夹下 ...

  2. 第25条:总是为第三方类的分类名称加前缀

    分类机制通常用于向无源码的既有类中新增功能. 注意: 分类中的方法是直接添加在类里面的,它就好比这个类中的固有方法. 将分类方法加入类中这一操作是在运行时系统加载分类时完成的. 运行时系统会把分类中所 ...

  3. swift 打开第三方应用_iOS卡通人物帧动画入门9(大结局):番外篇-扩展第三方类

    扩展第三方类 细心的朋友可能会发现,我们前面计算主角的大小用的总是同一方向第一帧纹理的大小,如果纹理大小有出入的话,会产生较大的偏差,最好的方法是取当前动画帧纹理的大小.不过这有些难度,所以我们退之求 ...

  4. 为何@Autowired注解无法实现第三方类的注入?

    为什么在Controller中对第三方DiscoverryClient类使用@Autowire注解无法自动注入? 这个问题来自于<master springMVC 4>这本书的源码,用Sp ...

  5. 深入浅出VC++串口编程--第三方类

    串口类 从本系列文章连载三.四可以看出,与通过WIN32 API进行串口访问相比,通过MScomm这个Activex控件进行串口访问要来的方便许多,它基本上可以向用户屏蔽多线程的细节,以事件(发出On ...

  6. thinkphp6 加载第三方类库_thinkphp中第三方类引入问题

    项目引入了第三方类库acp_service,引入是成功的,这个acp_service类中自己引入了 secureUtil.php类.secureUtil.php类引入了另外一个类并且示例化了引入的类, ...

  7. EAS客户端提示找不到第三方类可能的原因

    1.经常出现的这个问题的原因是,在客户化菜单栏编辑填写的UI对象路径不对,找不到对于的元数据,就会提示这个错误 2.如果单据引用了第三方jar包,如果没正确引用,编译classes文件失败,也会提示这 ...

  8. tp5引入第三方类 实现获取音频(.mp3)文件时长。

    一.你需要在核心之外扩展和使用第三方类库,并且该类库不是通过Composer安装使用,那么可以直接放入应用根目录下面的extend目录下面,该目录是官方建议的第三方扩展类库目录. 二.类的命名规范遵循 ...

  9. 混淆和7.0以上程序能运行,以下崩溃的原因(第三方类找不到)Zbar程序切到后台扫描出现黑屏

    混淆: -optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontpreverify # 混淆时是否 ...

最新文章

  1. GitHub趋势榜第一:用小姐姐自拍,生成二次元萌妹子,神情高度还原,反过来也可以...
  2. 《结对-结对编项目作业名称-开发过程》
  3. 第三百七十七节,Django+Xadmin打造上线标准的在线教育平台—apps目录建立,以及数据表生成...
  4. 0b3398php,思想道德修养与法律基础(九江职业技术学院)知到2020题目及答案
  5. SpingMVC ModelAndView, Model,Control以及参数传递
  6. python如何自动打印_利用Python每天自动打印练习题
  7. SpringBoot 集成Nacos报错(一)
  8. C语言/C++编程学习:不找C/C++的工作也要学C/C++的原因
  9. 99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏
  10. 无盘XP系统全套安装说明
  11. asp access物流基础信息查询平台毕业设计成品
  12. DevOps技术学习路线图 初阶+中阶+高阶
  13. 新人如何在职场中生存
  14. 微软Whitehorse modeler的背后
  15. 华为p50预计售价鸿蒙是什么,华为p50预计售价多少_华为p50售价预估
  16. (PKCS1)RSA公私钥pem文件解析
  17. Word中怎样在方框里打钩?方框里打钩的符号的方法
  18. xposed绕过模拟器检测_《绝地求生》手游避开模拟器检测攻略分享
  19. Xcode 设置macos app的适配系统,显示禁止图标
  20. 编码解码--url编码解码

热门文章

  1. 自定义Activity的启动关闭动画
  2. Flutter开发使用PlatformView显示iOS原生View(50)
  3. python能实现excel什么功能_Python pandas对excel的操作实现示例
  4. MySQL如何修改密码
  5. 自定义jstl函数标签
  6. ScrollView的基本用法丶代理方法
  7. Filter及FilterChain的使用具体解释
  8. 成功人士不用睡觉吗?
  9. 如何选择就业方向(80后的个人经验,转载)
  10. UNP Chapter 11 - 高级名字与地址转换