AFNetworking是一个轻量级的iOS网络通信类库 . 它的直接操作对象是AFHTTPClient,是一个实现了NSCoding和NSCopying协议的NSObject子类。AFHTTPClient是一个封装了一系列操作方法的“工具类”,处理请求的操作类是一系列单独的,基NSOperation封装的,AFURLConnectionOperation的子类.它支持HTTP的网络服务(GET 、POST、HEAD、PUT、DELETE等)。 目前使用比较多得一个下载库 目前一直在维护更新使用的是非常简单 不需要添加任何关联的库。带block形式 内部是任务队列进行下载就是对operation的一个封装下载。还对uikit 内部的类进行 类别形式添加方法(异步下载图片)。相比而言,ASI 以前使用比较多得一个下载开源库 现在已经不维护了,ASI 使用的时候要导入很多库比较麻烦。(ARC编写)
Github地址:https://github.com/AFNetworking/AFNetworking
1、AFN的使用
1 将AFNetWorking文件夹导入项目
2 在使用的地方 #import "AFNetworking.
3 在使用ARC项目中,使用“不使用ARC”的类库时,对类库的.m文件添加“-fno-objc-arc”
2、检测网络的连接状态
3、使用常规的AFN网络访问
1)AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
所有的网络请求,均有manager发起
2)需要注意的是,默认提交请求的数据是二进制的,返回格式是JSON
1> 如果提交数据是JSON的,需要将请求格式设置为AFJSONRequestSerializer
2> 如果返回格式不是JSON的,也需要对应的转换
3)请求格式
AFHTTPRequestSerializer 二进制格式
AFJSONRequestSerializer JSON
AFPropertyListRequestSerializer PList(是一种特殊的XML,解析起来相对容易)
4)返回格式 (响应格式)
AFHTTPResponseSerializer 二进制格式
AFJSONResponseSerializer JSON
AFXMLParserResponseSerializer XML,只能返回XMLParser,还需要自己通过代理方法解析
AFXMLDocumentResponseSerializer (Mac OS X)
AFPropertyListResponseSerializer PList
AFImageResponseSerializer Image
AFCompoundResponseSerializer 组合
取消任务
[manager.operationQueue cancelAllOperations];
4、GET和POST请求
GET
// 1.获得请求管理者(管理请求, 帮助发请求)
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 声明服务器返回的数据是JSON
// mgr.responseSerializer = [AFJSONResponseSerializer serializer];
// 2.封装请求参数
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"username"] = @"123";
params[@"pwd"] = @"123";
// 3.发送GET请求
[mgr GET:SNS_URL parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) { // responseObject : 在这种情况下是字典
NSLog(@"请求成功---%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"请求失败---%@", error);
}];
POST
// 1.获得请求管理者(管理请求, 帮助发请求)
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 声明服务器返回的数据是JSON
// mgr.responseSerializer = [AFJSONResponseSerializer serializer];
// 2.封装请求参数
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"username"] = @"123";
params[@"pwd"] = @"123";
// 3.发送GET请求
[mgr POST:SNS_URL parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) { // responseObject : 在这种情况下是字典
NSLog(@"请求成功---%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"请求失败---%@", error);
}];
5、文件上传
6、缓存策略
*****推荐几种常用的缓存策略*******