AFN小结

1,AFN概念、原理

2,AFN的封装使用

3,AFN与其它框架对比

—————————————————————————————————

1 , AFN的概念原理:

        AFN的基础是NSURL,AFN的直接操作对象AFHTTPClient是一个实现了NSCoding和NSCopying协议的NSObject子类。AFHTTPClient是一个封装了一系列操作方法的“工具类”,处理请求的操作类是一系列单独的,基于NSOperation封装的,AFURLConnectionOperation的子类。AFN的示例代码中通过一个静态方法,使用dispatch_once()的方式创建AFHTTPClient的共享实例,这也是官方建议的使用方法。在创建AFHTTPClient的初始化方法中,创建了OperationQueue并设置一系列参数默认值。在getPath:parameters:success:failure方法中创建NSURLRequest,以NSURLRequest对象实例作为参数,创建一个NSOperation,并加入在初始化发方中创建的NSOperationQueue。以上操作都是在主线程中完成的。

        AFNetworking2.0是对 NSURLConnection,NSURLSession的封装

        AFNetworking3.0删除了了对 NSURLConnection的封装内容

这是因为NSURLSession能够完全替代NSURLConnection,并且具有很多优点

  • 支持后台运行的网络任务
  • 暂停、停止、重启网络任务,不需要自己封装NSOperation
  • 支持断点续传,异步下载
  • 支持上传,异步上传
  • 获取下载、上传的进度

————————————————————————————————

2 , AFN的使用及封装

2 . 1 AFN的直接调用

        1. 实例化网络请求管理类.

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];


         2. 选择请求方法,发送网络请求.

NSString *urlString = @"http://127.0.0.1/resources/vedios.xml";


[manager GET:urlString parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {

                    // 这里可以获得请求的进度信息

} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

                    // 成功的回调,这里就得到了数据,JSON数据会自动解析

                    // 如果是XML,HTML或者其它数据,需要选择不同的解析器

}    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

    // 失败的回调

}];

2 . 2 AFN的封装

通过对AFN的封装类,在项目中把AFN代码与网络请求的代码隔离开,这样做的好处是,一旦AFN出现重大bug或者我们更换另外的第三方网络请求框架时,会比较简单和方便。可以想象,如果我们自己的项目中到处充斥的都是直接使用AFN网络请求,那么修改和维护代码将是多么的麻烦。

封装AFN只需要以下3步:

1, 新建一个类,继承自AFN,如果我们只用到HTTP,可以直接继承AFHTTPSessionManager

2, 在类中提供一个类方法,用于创建这个类的对象,可以使用单例模式

3, 在类中提供一个对象方法,用于进行网络请求,提供参数,可以进行GET、POST、HEAD等请求。

具体示例demo放在压缩包文件,可以下载查看。

————————————————————————————————-

3 , AFN与其它框架对比

  • AFNetWorking:简单易用,提供了基本够用的常用功能,有人更新和维护,而且目前使用者很多 。其相关资料,文档,demo很多,很好找遇到问题好解决。

*ASIHttpRequest: ASI的底层基于纯C语言的CFNetwork框架,功能很强大,可惜作者已停止更新.

  • MKNetWorkKit:简单易用,维护和使用者少.

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值