简单介绍:AFN是目前Github里面最流行的OC第三方框架,这个框架十分强大,几乎封装了所有的有关网络的功能; 早期的AFN底层使用NSURLConnectionOperation实现的,iOS6.0以后苹果推出NSURLSession,后来逐步取代NSURLConnectionOperation,目前的AFN版本已经完全摒弃了NSURLConnectionOperation,底层全部由NSURLSession来实现;下面列出AFN框架的功能结构:
- NSURLSession
+ AFURLSessionManager
+ AFHTTPSessionManager(封装了常用的 HTTP 方法)
* GET
* POST
* UIKit + AFNetworking 分类
* NSProgress :利用KVO
- 半自动的序列化&反序列化的功能
+ AFURLRequestSerialization :请求的数据格式/默认是二进制的
+ AFURLResponseSerialization :响应的数据格式/默认是JSON格式
- 附加功能
+ 安全策略
* HTTPS
* AFSecurityPolicy
+ 网络检测
* 对苹果的网络连接检测做了一个封装
* AFNetworkReachabilityManager
AFN下载地址:https://github.com/AFNetworking/AFNetworking
使用前请先导入AFN框架文件,并导入头文件 #import "AFNetworking.h"
1 使用AFN发送GET请求
1.创建会话管理者对象
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
2.发送网络请求
NSDictionary *dict = @{
@"username":@"jyq",
@"pwd":@"jyq",
@"type":@"JSON"
};
//第一个参数:请求路径(NSString) (URL地址后面无需添加参数)
//第二个参数:要发送给服务器的参数 (传NSDictionary)
//第三个参数:progress 进度回调
//第四个参数:success 成功的回调
responseObject:响应体(内部默认已经做了JSON的反序列处理)
task.response:响应头信息
//第五个参数:failure 失败的回调
[manager GET:@"http://xxx" parameters:dict progress:nil success:
^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"请求成功---%@---%@",responseObject,[responseObject class]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败--%@",error);
}];
2 使用AFN发送POST请求
1.创建会话管理者对象
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
2.发送网络请求
NSDictionary *dict = @{
@"username":@"jyq",
@"pwd":@"jyq",
@"type":@"JSON"
};
//第一个参数:请求路径(NSString) (URL地址后面无需添加参数)
//第二个参数:要发送给服务器的参数 (传NSDictionary)
//第三个参数:progress 进度回调
//第四个参数:success 成功的回调
responseObject:响应体(内部默认已经做了JSON的反序列处理)
task.response:响应头信息
//第五个参数:failure 失败的回调
[manager POST:@"http://xxx" parameters:dict progress:nil success:
^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"请求成功---%@---%@",responseObject,[responseObject class]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败--%@",error);
}];
对比使用NSURLSession发送网络请求,是不是简单多了!?
后续更新使用AFN实现上传/下载...