iOS 面试 | AFNetworking 如何封装一个 HTTP 请求以及响应数据

54 阅读1分钟
  1. 创建并配置请求头 NSURLRequest:设置 NSURLRequest属性(比如 POST 方法中 请求体的数据), HTTPMethod 参数,最后序列化参数

    如果是 GET、HEAD、DELETE,就把参数字符串拼接到 url 后面;如果是 POST、PUT 就拼接到 HTTP Body 中

  2. 利用第1 步生成的 request,创建 NSURLSessionDataTask 对象,它是实际发送 HTTP 请求的对象

  3. 创建 AFURLSessionManagerTaskDelegate 对象 delegate,处理回调函数。把 data task id(每个 task 都有唯一对应的 id) 和 delegate 放入字典保存。

  4. 为 data task 的『开始』和『挂起』添加监听

  5. data task 开始进行网络请求

  6. delegate 监听进度以及处理响应数据,最后在一个队列中串行地处理最后结果。

    做了各种格式的数据解析

参考资料

源码阅读:AFNetworking(一)—— 从使用入手

AFNetworking 到底做了什么?:一系列长文,讲得非常好,后续考虑针对这些文章写下自己的理解