AFN源码分析总结

AFN源码分析总结:

0. Content-type和MIME type

AFN默认是json解析
常用类型

  • application/json
  • text/json
  • text/plain
  • text/javascript
  • application/xml
  • text/xml
  • application/x-plist

图片类型

  • image/tiff
  • image/jpeg
  • image/gif
  • image/png
  • image/ico
  • image/x-icon
  • image/bmp
  • image/x-bmp
  • image/x-xbitmap
  • image/x-win-bitmap

万能类型

  • application/octet-stream

文件类型

  • multipart/form-data

在这里插入图片描述

1. 序列换和反序列化:

  1. 序列化: OC对象转化为JSON数据(NSArray, NSDictionary);
  2. 反序列化: JSON数据转化为OC对象;

2. multipart/form-data:

  1. 原因: 最早的post请求不支持文件上传
  2. 方案: multipart/form-data: 用于支持文件上传, 支持向服务器发送二进制数据.

3. POST编码类型: enctype

  1. application/x-www-form-urlencoded: 默认, key1=value1&key2=value2;
  2. multipart/form-data: 一般用于需要文件上传
  3. text/plain, application/json: 传递文本内容

4. URL编码: 百分编码: AFPercentEscapedStringFromString:

  1. URL编码格式采用的是ASCII码,而不是Unicode;
  2. 对于非ASCII字符,需要使用ASCII字符集的超集进行编码得到相应的字节,然后对每个字节执行百分号编码。对于Unicode字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,然后对每个字节执行百分号编码

5. User-Agent:

  1. 访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识.
  2. 用户在上网访问的时候会作为HTTP的包头的一部分向服务器发送,用于识别用户的当前环境.
  3. iOS开发中AFN将设备的一些基本信息获取拼接成字符串封装了进去.

6. NSError和NSURLError

7. NSJSONReadingOptions和NSJSONWritingOptions

8. NSURLSession:

https://blog.csdn.net/kuangdacaikuang/article/details/53397276

  • 整体流程
    NSURL—>NSURLRequest—>NSURLSession(config / delegate / delegateQueue)—>NSURLSessionDataTask
  • 简单实现代码
  1. NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
  2. NSURLRequest *request = [[NSURLRequest alloc]initWithURL:[NSURL URLWithString:@“”]];
  3. NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:{}];
  4. [dataTask resume];
  • .h文件分析
  1. 分为初始化部分、属性部分、dataTask部分、uploadTask部分、downloadTask部分、streamTask部分(iOS9).
  2. 两套API: 一套不到block回调的API, 一套带block回调的API(NSURLSession的分类实现);

8.1 NSURLSessionConfiguration:

https://www.jianshu.com/p/9e7e19f9afe5

  • 三种类型的configuratin
  1. defaultSessionConfiguration: 默认的配置会将缓存存储在磁盘上, 并在用户的钥匙串中存储凭据, 还将cookie(默认情况下)存储在共享cookie存储中.
  2. ephemeralSessionConfiguration: 第二种瞬时会话模式不会创建持久性存储的缓存, 短暂会话对于web浏览器和其他类似情况
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值