AFNetworking整体框架简单整理

一、AFNetworking整体框架是怎样的

1、UIKit集成模块 UIKit

2、请求序列化 Serialization

3、响应序列化 Serialization

4、会话 NSURLSession AFURLSessionManager最核心 子类:AFHTTPSessionManager

6、网络安全模块 Security

7、网络监听 Reachability

AFNetworking整体框架简单整理

AFNetworking整体框架简单整理

会话NSURLSession模块

NSURLSession

  • AFURLSessionManager:最核心模块
  • AFHTTPSessionManager:继承 AFURLSessionManager 使用频率最高
  • AFHTTPSessionManager包含有:
    • AFURLResponseSerialization:响应序列化,负责将网络请求的结果解析
    • AFURLRequestSerialization:请求序列化负,责根据传递参数组装、拼接最终转化出的一个结果

AFNetworking整体框架简单整理

面试题:

AFURLSessionManage都负责哪些工作

  • 创建和管理NSURLSession、NSURLSessionTask
  • 实现NSURLSessionDelegate等协议的代理方法
  • 引入AFSecurityPolicy保证请求安全
  • 引入AFNetworkReachabilityManager监控网络状态

发送一个Get方式的HTTP请求

1、调用get方法、内部使用 NSURLSessionDataTask 来实现

2、requestWithMethed 请求序列化、字典转换成json字符串

3、dataTaskWithRequest 调用系统方法、给dataTask 设置代理给 AFURLSessionManagenTaskDelegate

验证证书合法性的代码:

AFNetworking整体框架简单整理

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这是权限认证的核心,它通常被称为保护空间,表示需要认证的服务器或者域,它定义了一系列的约束去告诉我们需要向服务器提供什么样的 认证,这个保护空间含有以下几个信息:

1

其中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表单认证

image.png

NSURLAUthenticatioMethodlnrtifct,适用协议

//ServerTrust认证,适用于任何协议

NSURLAuthenticationMethodserverTrust

image.png

im

1i

AFN 缓存模块对比SD
●AFN图片缓存是设定2个临界值,最大存储值和清理后保留的缓存值。到达最大值则清理最早存入的图片。直到达到清理后需要留存的临界值为止。只以临界值为节点清理。
●SD图片缓存很明显是愿意牺牲空间来换时间,能多存点就多存点。

原文链接:https://www.cnblogs.com/mysweetAngleBaby/p/16816696.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:AFNetworking整体框架简单整理 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • ios apns推送 离线锁屏语音播报

    一、背景 公司正在研发的一款App,需要在进行消息推送时支持语音播报。 具体要求: 离线:App在用户未打开时,可收到消息推送 锁屏:用户在设备锁屏状态下,仍可收到消息推送 语音播报:收到消息推送时可同时进行语音播放 苹果的APNs消息推送, 支持在应用未打开及设备锁屏状态下收到推送。 而同时进行语音播报,则需要做一些特殊处理。 目前语音播报的场景有两种: …

    IOS 2023年4月25日
    00
  • Flash开发iOS应用全攻略(五)——如何上传应用到iTunes Connect

      上传IPA到iTunes Connect 上一篇我介绍了如何在iTunes Connect里准备应用。最后在这篇文章里我会简单介绍下如何来上传IPA到iTunes Connect。 登陆iTunes Connect,进入Manage Your Applications页面后,点击你创建的应用图标,进入应用的主页。 如图,在应用的主页中可以看到应用的基本信…

    IOS 2023年4月18日
    00
  • IOS使用AutoLayout让UIScrollView自动计算ContentSize

    在IOS的界面开发中,布局方式存在分裂的两种局面。早入行的iOS开发者,基本上都是手动计算各种高度。但是从web或者Android转过去的学习iOS的开发者,基本上都很难适应这种手动计算的方式,更加偏向使用autolayout去做布局。实际上 iPhone6之后,iOS设备出现多种分辨率之后,苹果也推荐大家使用autolayout去写界面。 看了几本iOS的…

    IOS 2023年4月17日
    00
  • iOS-Coretext 图文混排占位符上下偏移处理

    这里说的占位符,实际就是排版时需要展示的图片,图片基于占位符填充,那么处理图片时,怎么解决占位符(图片)的上下偏移在设置占位符属性时,我通过以下方法来实现它: + (NSAttributedString *)wxImageAttributeCoreTextFromPaperQuestion:(WXTKCoretextQSourceImg *)image{ C…

    IOS 2023年4月17日
    00
  • iOS上拉边界下拉白色空白问题解决概述

    表现 手指按住屏幕下拉,屏幕顶部会多出一块白色区域。手指按住屏幕上拉,底部多出一块白色区域。 产生原因 在 iOS 中,手指按住屏幕上下拖动,会触发 touchmove 事件。这个事件触发的对象是整个 webview 容器,容器自然会被拖动,剩下的部分会成空白。 解决方案 1. 监听事件禁止滑动 移动端触摸事件有三个,分别定义为 touchstart :手指…

    IOS 2023年4月17日
    00
  • iOS 组件化实施过程

    目录 一、组件化的优缺点 二、组件化的拆分 三、组件与组件之间如何进行通讯(路由) 四、从Cocopods拉取代码的过程 五、创建本地私有库 一、组件化的优缺点 二、组件化的拆分 三、组件与组件之间如何进行通讯(路由) 四、从Cocopods拉取代码的过程 远程索引库里很多的.spec文件,该文件记录了很多内容,如用户名,框架名称,描述,框架的地址 Podf…

    IOS 2023年4月18日
    00
  • [Android开发学iOS系列] iOS写UI的几种方式

    [Android开发学iOS系列] iOS写UI的几种方式 作为一个现代化的平台, iOS的发展也经历了好几个时代. 本文讲讲iOS写UI的几种主要方式和各自的特点. iOS写UI的方式 在iOS中写UI有多种选择, 大的分类: 使用UIKit还是SwiftUI. 在使用UIKit的情形下, 还根据是否使用storyboard来区分. UIKit: 用sto…

    IOS 2023年4月18日
    00
  • C C++指针面试题零碎整理

    最基础的指针如下: int a; int* p = &a; 答:p指向a的地址,&是取a的地址。*指的是指针中取内容的符号。 2.str[]和str*的区别: char str1[] = “abc”; char str2[] = “abc”; const char str3[] = “abc”; const char str4[] = “ab…

    IOS 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部