iOS-AFNetWorking

客户端与服务器交互,这就必须用到网络请求
ASIHTTPRequest 、AFNetWorking 和 MKNetworkKit都是网络访问框架。

AFN 和 ASI :

ASIHTTPRequest已经停止维护
ASIHTTPRequest是基于NSURLConnection类实现的,

AFNetWorking早期也是基于NSURLConnection实现,后来iOS9 之后已经放弃了NSURLConnection,开始使用iOS 7之后推出的NSURLSession,

HTTPS证书校验:

AFN框架中实现HTTPS请求的客户端校验是通过AFSecurityPolicy对象实现的
AFN框架的AFSecurityPolicy类为我们实现了HTTPS证书校验的功能,且同时支持三种方式校验证书

HTTPS请求首先需要TLS/SSL握手,该协议也是建立在TCP基础之上

AFHTTPSessionManager继承自AFURLSessionManager,并且实现了<NSSecureCoding, NSCopying>两个协议

AFURLSessionManager这个类才是对请求发送的核心类.它主要包括AFURLSessionManagerTaskDelegate、
_AFURLSessionTaskSwizzling、
AFURLSessionManager这三个对象.

AFURLSessionManagerTaskDelegate:
分发处理了AFURLSessionManager主类的上传,下载进度的管理,通过观察task一些方法的变化,来得到进度.而且还帮忙处理了NSURLSessionTaskDelegate、NSURLSessionDataTaskDelegate和NSURLSessionDownloadTaskDelegate 等代理的返回数据.

现在AFNetworking 内部提供的创建方式[AFHTTPSessionManager manager]是单例的不会每次创建一个NSURLSession,那么每次新建一个NSURLSession,然后新建Task,激活Task
共享的NSURLSession将会复用TCP的连接,而每次都新建NSURLSession的操作将导致每次的网络请求都开启一个TCP的三次握手。所以我们封装请求类的时候,最好用单例模式.让manager持有NSURLSession,达到共享的效果.即一个Session创建多个Task来实现网路的请求.

AFHTTPSessionManager请求管理者
//最大请求并发任务数
// 请求格式
// 超时时间
// 设置请求头
// 返回格式

处理get请求:

GET: parameters: progress:^(){}

处理post请求:

POST: parameters: progress:^

处理文件上传:

POST:url parameters:parameters constructingBodyWithBlock:^(formData){ 
    [formData appendPartWithFileURL:
}

处理文件下载:

downloadTaskWithRequest:
NSURLSessionDownloadTask *task =

网络状态监听:
//创建网络监测者

AFNetworkReachabilityManager *manager
setReachabilityStatusChangeBlock:^(
 [manager startMonitoring];

AFNetWorking内存泄露

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

点进去查看源码发现并不是单例,而是每次都实例化一个AFHTTPSessionManager对象,源码如下

+ (instancetype)manager {
    return [[[self class] alloc] initWithBaseURL:nil];
}

所以我们在使用AFNetWorking的时候要对AFHTTPSessionManager进行单例封装

AFNetWorking关于HTTPs:
iOS 9 引入的 ATS(App Transport Security)技术
目前应对https的方案有两种:
屏蔽调iOS ATS(App Transport Security),在pList.info文件中添加如下代码
第二种方式:
配置https CA证书,这里采用获取NSBundle中获取CA证书,AFNetWorking提供了配置AFSecurityPolicy模块:
AFSecurityPolicy *security =
然后通过设置AFHTTPSessionManager的securityPolicy属性等于自定义的AFSecurityPolicy。

Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" 
UserInfo={NSLocalizedDescription=Request failed: unacceptable content-type: text/html, 

解决:
httpSM.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];


参考:
https://juejin.im/entry/589d1aa161ff4b006b37408e //实例
https://www.jianshu.com/p/5f8e56a17d85
https://www.jianshu.com/p/856f0e26279d //原理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容