AFN的基本使用(发送网络请求)

简单介绍: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实现上传/下载...

你可能感兴趣的:(AFN的基本使用(发送网络请求))