第三方类AFNetworking
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三方类AFNetworking相关的知识,希望对你有一定的参考价值。
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 }
以上是关于第三方类AFNetworking的主要内容,如果未能解决你的问题,请参考以下文章
ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类