AFNetworking整体框架简单整理
一、AFNetworking整体框架是怎样的
1、UIKit集成模块 UIKit
2、请求序列化 Serialization
3、响应序列化 Serialization
4、会话 NSURLSession AFURLSessionManager最核心 子类:AFHTTPSessionManager
6、网络安全模块 Security
7、网络监听 Reachability
会话NSURLSession模块
NSURLSession
- AFURLSessionManager:最核心模块
- AFHTTPSessionManager:继承 AFURLSessionManager 使用频率最高
- AFHTTPSessionManager包含有:
- AFURLResponseSerialization:响应序列化,负责将网络请求的结果解析
- AFURLRequestSerialization:请求序列化负,责根据传递参数组装、拼接最终转化出的一个结果
面试题:
AFURLSessionManage都负责哪些工作
- 创建和管理NSURLSession、NSURLSessionTask
- 实现NSURLSessionDelegate等协议的代理方法
- 引入AFSecurityPolicy保证请求安全
- 引入AFNetworkReachabilityManager监控网络状态
发送一个Get方式的HTTP请求
1、调用get方法、内部使用 NSURLSessionDataTask 来实现
2、requestWithMethed 请求序列化、字典转换成json字符串
3、dataTaskWithRequest 调用系统方法、给dataTask 设置代理给 AFURLSessionManagenTaskDelegate
验证证书合法性的代码:
SecTrustRef
SecTrustRef
这是一个需要验证的信任对象,包含待验证的证书和支持的验证方法等.
SecTrustResultType
表示验证结果。其中 kSecTrustResultProceed表示serverTrust验证成功,且该验证得到 了用户认可(例如在弹出的是否信任的alert框中选择always trust)。 kSecTrustResultUnspecified表示 serverTrust验证成功,此证书也被暗中信任了,但是用 户并没有显示地决定信任该证书。 两者取其一就可以认为对serverTrust验证成功。
SecTrustEvaluate
证书校验函数,在函数的内部递归地从叶节点证书到根证书验证。
需要验证证书本身的 合法性(验证签名完整性,验证证书有效期等);
验证证书颁发者的合法性(查找颁发者 的证书并检查其合法性,这个过程是递归的).而递归的终止条件是证书验证过程中遇到 了锚点证书(锚点证书:嵌入到操作系统中的根证书,这个根证书是权威证书颁发机构颁 发的自签名证书).
上面所说的只是一般的校验方法,那么在有的客户端中,为了确定服务端返回的证书是否是自己所需要的证书,这时我们需要在客户端中导入本地证书。
NSURLAuthenticationChallenge
(NSURLProtectionSpace *)protectionSpace;
(NSURLCredential *)proposedCredential;
(NSInteger)previousFailureCount;
(NSURLResponse *)failureResponse;
(NSError *)error;
NSURLProtectionSpace
NSURLAuthenticationChallenge中 的一个属性NSURLProtectionSpace这是权限认证的核心,它通常被称为保护空间,表示需要认证的服务器或者域,它定义了一系列的约束去告诉我们需要向服务器提供什么样的 认证,这个保护空间含有以下几个信息:
其中authenticationMethod中包含的认证类型如下
NSURLProtectionSpaceHTTP//_http协议
NSURLProtectionSpaceHTTPs//https协议
NSURLProtectionSpaceFTP//ftp协议
NSURLProtectionSpaceHTTPProxy//http代理
NSURLProtectionSpaceHTTPSProxy//https代理
NSURLProtectionSpaceFTPProxy//ftp代理
NSURLProtectionSpacesockSProxy//socks代理
NSURLAuthenticationMethodDefault//协议的默认身份认证
//http的basic认证,等同于NSURLAuthenti
NSURLAuthenticationMethodHTTPBasic
cationMethodDefault
NSURLAUthenticationMethodHTPDigest//htt摘要认证
NSURLAuthenticationMethodHTMLForm//htm表单认证
NSURLAUthenticatioMethodlnrtifct,适用协议
//ServerTrust认证,适用于任何协议
NSURLAuthenticationMethodserverTrust
AFN 缓存模块对比SD
●AFN图片缓存是设定2个临界值,最大存储值和清理后保留的缓存值。到达最大值则清理最早存入的图片。直到达到清理后需要留存的临界值为止。只以临界值为节点清理。
●SD图片缓存很明显是愿意牺牲空间来换时间,能多存点就多存点。
AFNetworking整体框架简单整理的更多相关文章
- iOS学习——iOS 整体框架及类继承框架图
整理自:IOS 整体框架类图值得收藏 一 整体框架 在iOS开发过程中,对iOS的整理框架的了解和学习是必不可少的一个环节,今天我们就好好来了解一下iOS的整体框架.首先贴一个关于iOS的框架介绍:i ...
- .NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
- Duilib源码分析(一)整体框架
Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开源库,以viksoe项目下的UiLib库的基础上开发(此后也将对UiLib库进行源码分析):通过XML布局界面,将用户界面和处理逻辑彻底 ...
- 初识cocos2d-x-从环境配置到整体框架
前言 ACM生涯在带着些许遗憾中结束了.春招的时候找了一份游戏开发的工作,现在学习cocos2dx中. 从ACM竞赛到实际项目开发的学习,第一感觉就是不适应,虽然感觉实际项目的确要比ACM简单的多.最 ...
- .Net开源SqlServer ORM框架SqlSugar整理
一.链接整理 官方Git源代码地址: https://github.com/sunkaixuan/SqlSugar 最新发布版更新地址:当前版本Release 3.5.2.1 https://gith ...
- 转载:.NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
- [c#]asp.net开发微信公众平台(7)前6篇的整体框架demo源码
这里给出的demo是具备整体框架的微信公众平台源码, 所谓demo就是拿过去就可以直接演示使用的东西, 当然不会具备非常详细的具体到业务层面.数据层面的东西, 每个人都可以在此基础上自由发挥, 只 ...
- MYBATIS 简单整理与回顾
这两天简单整理了一下MyBatis 相关api和jar包这里提供一个下载地址,免得找了 链接:http://pan.baidu.com/s/1jIl1KaE 密码:d2yl A.简单搭建跑项目 2.进 ...
- 关系型数据库工作原理-数据库整体框架(翻译自Coding-Geek文章)
本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...
- Selenium自动化测试框架入门整理
关注嘉为科技,获取运维新知 本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明.作为开发人员.测试人员入门参考. 本文参考:Se ...
随机推荐
- Nginx编译安装与常用配置模板
Nginx编译安装与常用配置模板 背景 是在受不了每次都是先去百度,找模板了. 这次将几个常用模板整理一下, 以后不管在哪里可以直接使用. 注意: 不能直接用于生产, 可用于测试与POC 第一部分编译 ...
- Ubuntu18.04 安装Postgresql12
Postgresql 12 是有很多新增特性的,但是最关键的一点是Postgresql 12 的SQL备份文件是不能直接使用psql命令导入到Postgresql 10 的. Ubuntu18.04 ...
- 巧用GenericObjectPool创建自定义对象池
作者:京东物流 高圆庆 1 前言 通常一个对象创建.销毁非常耗时的时候,我们不会频繁的创建和销毁它,而是考虑复用.复用对象的一种做法就是对象池,将创建好的对象放入池中维护起来,下次再用的时候直接拿池中 ...
- 【DS】P9062 [Ynoi2002] Adaptive Hsearch&Lsearch(区间最近点对)
Problem Link 给定平面上 \(n\) 个点,\(Q\) 次询问编号在 \([l,r]\) 内的点的最近点对.\(n,Q\le 2.5\times 10^5\). 技巧:平面网格化 乱搞都是 ...
- ffmpeg修改文件格式
http://ffmpeg.org/ 官网下载windows版本 进这个文件夹 随便找一个格式的文件我这里以mp4 放在这个文件夹里面 然后状态栏输入cmd 输入下方命令代码 ffmpeg -i 66 ...
- C++ CryptoPP使用AES加解密
Crypto++ (CryptoPP) 是一个用于密码学和加密的 C++ 库.它是一个开源项目,提供了大量的密码学算法和功能,包括对称加密.非对称加密.哈希函数.消息认证码 (MAC).数字签名等.C ...
- CSS概念与CSS选择器
CSS简述 CSS被称为级联样式表或者CSS样式表.CSS也是一种标记语言. CSS主要用于设置HTML页面中的: 1.文本内容(字体,大小,对齐方式等), 2.图片的外形(宽高,边框样式,边距等), ...
- koreanDollLikeness_v10模型下载及使用
koreanDollLikeness_v10模型 前几天给大家提供了koreanDollLikeness_v15模型的下载,最近小卷终于找到koreanDollLikeness_v10模型啊.先来说说 ...
- 关于大数乘法的数组类型问题(int 还是char)
可以知道在处理高精度乘法的时候,我们是不考虑当场进位的,在所有位数都模拟完竖式乘法后才进行逐位进位,这就要求存储每个位的数组保证不会爆掉溢出 众所周知char类型最多只能存储到255,非常非常容易溢出 ...
- 初次尝试GPU Driven —— 大范围植被渲染
初次尝试GPU Driven -- 大范围植被渲染 GPU Driver简单概要,即把整体逻辑放到GPU上运行,解放CPU压榨GPU,初次尝试,记录一下研究过程. 渡神纪 塞尔达 塞尔达 塞尔达 在开 ...