第三方类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网络监测
#import "ViewController.h"
// 网络请求的头文件
#import <AFNetworking.h>
@interface ViewController ()
{
/// 进行网络监测判断的BOOL值
BOOL isOpen;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; } #pragma mark - 实时监测当前网络状态
- (IBAction)networkMonitoringAction:(id)sender {
if (!isOpen) {
// 打开网络监测
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
isOpen = YES;
} else {
// 关闭网络监测
[[AFNetworkReachabilityManager sharedManager] stopMonitoring];
isOpen = NO;
}
// 判断当前是wifi状态、3g、4g还是网络不可用状态
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
/**
AFNetworkReachabilityStatusUnknown = -1, // 未知网络
AFNetworkReachabilityStatusNotReachable = 0, // 没有网络连接
AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3g,4g
AFNetworkReachabilityStatusReachableViaWiFi = 2, // WIFI状态
*/
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"当前网络处于未知状态");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"当前没有网络连接");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"当前处于WIFI状态");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"当前处于移动网络状态,请您注意您的流量");
break;
default:
break;
}
}]; }
2.2 Get、Post请求,网络加载时"菊花"的设置
#import "ViewController.h"
// 网络请求的头文件
#import <AFNetworking.h>
#import <AFNetworkActivityIndicatorManager.h>
@interface ViewController ()
/// 用于网络请求的session对象
@property (nonatomic, strong) AFHTTPSessionManager *session; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// 单例 初始化session对象
self.session = [AFHTTPSessionManager manager];
// 设置请求返回支持的文件类型
self.session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"application/x-json",@"text/html", nil]; // 转圈圈的菊花默认是关闭的,需要手动打开,在网络慢的情况下请求数据时,手机左上角就会出现转圈圈的菊花
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
} #pragma mark - get网络请求
- (IBAction)getRequestAction:(id)sender {
/**
参数1:get请求的网址
参数2:拼接的参数,get请求不需要
参数3:当前进度,下载时常用,block传进来的参数downloadProgress就是下载进度
参数4:请求成功时调用的block,responseObject是请求到的数据
参数5:请求失败时调用的block
*/
[self.session GET:@"http://api.yhouse.com/m/city/dynmiclist" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"下载进度");
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// 打印请求到的数据
NSLog(@"请求成功%@", responseObject);
// 解析数据代码写在这里
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败");
}];
}
#pragma mark - post网络请求(表单上传)
- (IBAction)postRequestAction:(id)sender {
// body体
/*{
do = "pri_memberlist";
"member_id" = zpHr2dsRvQQxYJxo2;
"workspace_id" = ILfYpE4Dhs2gWcuQx;
}*/ /**
参数1:post请求的网址
参数2:拼接的body体
参数3:当前上传进度,block传进来的参数uploadProgress就是上传进度
参数4:请求成功时调用的block,responseObject是请求到的数据
参数5:请求失败时调用的block
*/
NSString *urlStr = @"http://m.taskwedo.com/API/wedo1/wedo.php";
NSMutableDictionary *dataDic = [NSMutableDictionary dictionary];
[dataDic setValue:@"pri_memberlist" forKey:@"do"];
[dataDic setValue:@"zpHr2dsRvQQxYJxo2" forKey:@"member_id"];
[dataDic setValue:@"ILfYpE4Dhs2gWcuQx" forKey:@"workspace_id"]; [self.session POST:urlStr parameters:dataDic progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"上传进度");
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"请求成功%@", responseObject);
// 解析数据代码写在这里
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败");
}];
}
第三方类AFNetworking的更多相关文章
- tp框架之分页与第三方类的应用
1.先把分页类放在根目录下,比如放在某个模块下 2.在类里面写入命名空间,注意类名的格式(类名要与里面的方法名一致) 3.在需要的方法里面按照路径进行实例化,然后就可以使用了 方法: public f ...
- ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)
一.ajax例子:ajaxReturn("ok","eval")->thinkphp中ajax的返回值的方法,返回参数为ok,返回类型为eval(字符串) ...
- ThinkPHP讲解(十)——第三方类的引入:以分页为主
第三方类的引入,以分页类为例: 1.在控制器里新建一个分页的操作方法FenYe() 注意:第三方类Page.class.php放在Think或Home文件夹下,并新近一个文件夹,放在里面,并在其类里加 ...
- Thinkphp 零散知识点(caa/js路径,引入第三方类,ajax返回,session/cookie)
一.关于JS和CSS路径问题 1.找路径是从入口文件index.php来找的,而不是从文件本身所在位置来找, 因为我们访问时是访问的入口文件 2.在存放JS和CSS的时候可以放到public文件夹下 ...
- TP框架 命名空间 与第三方类
命名空间 相当于虚拟目录 所有类文件都放在虚拟目录 功能:实现自动加载类 TP框架的命名空间要更复杂 内容=> 命名空间中定义和使用 都用\1初始命名空间 相当于 根目录 如:Library文件 ...
- tp5引用第三方类vendor或extend(多种方法)
extend 方法一:命名空间引入 我们只需要把自己的类库包目录放入EXTEND_PATH目录(默认为extend,可配置),就可以自动注册对应的命名空间,例如: 我们在extend目录下面新增一个l ...
- 第三方库AFNetworking 3.1.0的简单使用
AFNetworking是一个 在iOS开发中 使用非常多网络开源库.它是一个轻量级的网络请求API类库. 适用于iOS以及Mac OS X.它构建于在(Apple iOS开发文档) NSURLCon ...
- laravel 5.2 引入第三方类
composer 安装类依赖包 很受用 也很方便 但是要是一个有一定规模的公司技术团队 因为要照顾大局 还是引入类好些 下面是引入类的方法 1.首先在app目录下创建一个新的文件夹,命名Tools(可 ...
- 基于MFC与第三方类CWebPage的百度地图API开发范例
在进行百度地图API开发之前你需要到http://developer.baidu.com/map申请密匙 密匙申请之后就可以进行百度地图API的开发了. 下面我们以在visual c++6.0里进行地 ...
随机推荐
- Only one instance of a ScriptManager can be added to the page.
一般出现在一个页面用了多个用户控件,而每个用户控件中都用到了ScriptManager,最好的办法是控件中不要加上 <asp:ScriptManager ID="Scr ...
- 如何让Vim显示dos下的^M符号
/*********************************************************************** * 如何让Vim显示dos下的^M符号 * 声明: * ...
- RPi 2B Raspbian system install
/***************************************************************************** * RPi 2B Raspbian系统安装 ...
- UVA 10537 The Toll! Revisited 过路费(最短路,经典变形)
题意:给一个无向图,要从起点s运送一批货物到达终点e,每个点代表城镇/乡村,经过城镇需要留下(num+19)/20的货物,而经过乡村只需要1货物即可.现在如果要让p货物到达e,那么从起点出发最少要准备 ...
- acdream 1684 娜娜梦游仙境系列——莫名其妙的插曲 (gcd)
题意:一开始有一个集合,集合里有n个不同的数,然后Alice(娜娜)与Bob轮流进行操作,每人都可以任意选择两个数a,b,不妨设a>b,不过要求a-b不在集合中,把a-b放入集合(集合元素个数只 ...
- K2 学习笔记
转:http://www.cnblogs.com/kaixuanpisces/category/149223.html k2 简介 工作流介绍 k2流程设计简介 K2流程设计详细版(图文)一 K2流程 ...
- HDU-3280 Equal Sum Partitions
http://acm.hdu.edu.cn/showproblem.php?pid=3280 用了简单的枚举. Equal Sum Partitions Time Limit: 2000/1000 M ...
- bjfu1284 判别正则表达式
做解析器做得多的我,一上来就觉得要写解析器,麻烦,于是想偷懒用java的正则表达式类Pattern直接进行判断,结果wa了,原因是这题要求的正则表达式只是真正正则表达式的一个子集.比如|12是合法正则 ...
- 【剑指offer 面试题23】从上往下打印二叉树
思路: 没啥好说的,BFS. C++: #include <iostream> #include <queue> using namespace std; struct Tre ...
- Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(二)
// Chapter 2介绍的是2d下的投影变换,摘录下了以下定理 Result 2.1. The point x lies on the line l if and only if xTl = 0. ...