免费开源的iOS开发学习平台

iOS开发之网络编程:4-AFNetworking介绍

AFNetworking是目前使用人数最多的网络加载第三方开源框架,从最初的NSURLConnection到现在的NSURLSession,它都一直保持着与苹果的步调一致,而由它也衍生出大量的相关第三方网络功能框架。在绝大多数情况下,当我们需要发送网络请求,或者是下载文件,使用AFNetworking都是最便捷的选择。

AFNetworking的安装集成方法

AFNetworking可以使用手工方式以及Cocoapods两种方式导入工程,由于我们还没有介绍CocoaPods的使用,这里我们先以手工导入的方式为例。

首先到GitHub上下载最新版本的AFNetworking。AFNetworking在GitHub的仓库地址为:https://github.com/AFNetworking/AFNetworking,点击【Download ZIP】获取最新版本的AFNetworking。

解压下载下来的zip文件,将红框中的文件夹拖入项目中。

在需要发送网络请求的代码中,导入AFNetworking的头文件即可。

#import "AFNetworking.h"

AFNetworking简介

AFNetworking是一个完全开源的第三方框架,因此我们可以清晰的获取其中每个类的实现方式。根据AFNetworking框架中的内容,可以看到AFNetworking主要分为如下四个功能模块:

  • 网络通信模块(URLSession)
  • 网络状态监听模块(Reachability)
  • 网络通信安全策略模块(Security)
  • 网络通信信息序列化/反序列化模块(Serialization)

AFNetworking的其核心是网络通信模块,其余的模块均是为了配合网络通信模块工作。这四个模块所对应的类的结构关系图如下所示:

AFNetworking的核心类是AFURLSessionManager类,AFHTTPSessionManager继承自AFURLSessionManager,而AFURLRequestSerialization和AFURLResponseSerialization, AFSecurityPolicy, AFNetworkReachabilityManager则被AFURLSessionManager所使用。

AFNetworking常用方法

AFNetworking对复杂的网络请求进行了封装,大大降低了有关网络开发的难度,一般来说,只要掌握如下两个核心方法即可。

  • 发送POST请求并对返回结果进行处理。我们可以在success这个block中获取服务器返回的数据responseObject,并对服务器返回的数据进行后续处理,需要注意的是该block是异步调用的,即当成功获取网络请求后才被调用。
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
                    parameters:(nullable id)parameters
                       success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
                       failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
  • 发送GET请求并对返回结果进行处理。服务器返回的数据同样封装在success这个block中的responseObject参数中。
- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
                   parameters:(nullable id)parameters
                      success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
                      failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;