YOU'VE MADE A BRAVE DECISION, WELCOME.

每一个不曾起舞的日子都是对生命的辜负。

初识AFNetworking源码

AFNetworking其实是对NSURLSession的封装,一共有一下几块:

  1. AFURLRequestSerialization.h请求序列化
    1. 它继承了<NSObject, NSSecureCoding, NSCoping>三个协议。它不是一个类,准确说它是一个协议,并提供一系列方法。
    2. 例如可以设置HTTP的请求一个JSON表示,并设置内容类型的HTTP报头字段值application/JSON
    3. AFHTTPRequestSerializer
      1. 提供一个具体的基本实现URL的查询字符串
      2. 参数序列化和默认请求头,以及响应状态代码和内容类型验证
      3. +(instancetype)serializer;
    4. AFMultipartFormData
      1. 添加数据到文件,返回BOOL类型的方法
    5. AFJSONRequestSerializer继承与AFHTTPRequestSerializer
    6. AFPropertyListRequestSerializer继承与AFHTTPRequestSerializer
  2. AFURLResponseSerialization.h
    1. 同样继承了<NSObject, NSSecureCoding, NSCoping>三个协议。
    2. 它的协议是一个对象,通过解码数据转换成一个更有用的对象表示,根据服务器响应的细节。
    3. 响应序列化器可能另外执行验证传入的响应和数据。
    4. 例如,JSON响应序列化器可以检查一个可接受的状态代码(“2 xx”范围)和内容类型(application / JSON),解码一个有效的JSON响应对象。
    5. 它有AFJSONResponseSerializerAFXMLParserResponseSerializerAFXMLDocumentResponseSerializerAFPropertyListResponseSerializer,AFImageResponseSerializer,AFCompoundResponseSerializer
  3. AFSecurityPolicy.h
    1. 评估对固定服务器的信任,并与证书和公钥安全连接
    2. 将固定的SSL证书添加到您的应用程序可以帮助防止中间人攻击和其他漏洞
    3. 财务信息处理敏感的客户数据的应用程序被强烈鼓励所有通信路由在一个HTTPS和SSL连接固定配置和启用
  4. AFNetworkReachabilityManager.h
    1. 来检测网络连接性,监控领域的可达性,和地址为无线广域网和无线网络接口
    2. 可用于确定背景信息为什么网络操作失败,或触发一个网络操作重试建立连接
    3. 不应该被用来防止用户启动一个网络请求,很可能一个初始请求可能需要建立可达性
    4. +(instancetype)sharedManager;单例初始化方法,相当于alloc init
  5. AFURLConnectionOperation.h
    1. 它是一个子类“NSOperation”实现“NSURLConnection”委托的方法
    2. 如果要创建一个子类通过HTTP或HTTPS通信的协议,您可能想要考虑子类化“AFHTTPRequestOperation”相反,因为它支持指定可接受的内容类型或状态码
    3. 依靠CA信任模型来验证SSL证书公开应用程序安全漏洞,例如中间人攻击
    4. 应用程序连接到服务器,SSL证书将提供了一个增加的安全级别,通过检查服务器证书有效性中指定的应用程序包。
    5. -(void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler;指定操作应继续执行程序后进入后台,和后台任务到期处理程序。同步调用处理程序的主线程,从而阻止应用程序的暂停瞬间同时通知应用程序。
  6. AFHTTPRequestOperation.h
    1. 它是AFURLConnectionOperation的子类,使用HTTP或HTTPS协议,它封装了可接受的状态代码和内容类型的概念,确定请求的成功或失败。
  7. AFHTTPRequestOperationManager.h
    1. 封装了与web应用程序通过HTTP通信的常见模式,包括创建请求,响应序列化,网络可达性监控、运营管理和安全,以及请求。
  8. AFURLSessionManager.h
  9. AFHTTPSessionManager.h