第一次进行源码的阅读,AFNetWorking在工作中最为常用,先写AFNetworking的阅读笔记。
- 这是我的问题
- 版本:使用的AFNetworking为3.0版本?版本之间的差异有有哪些?
- AFNetworking的作用?
- 怎样使用AFNetworking?
- AFNetworking和ASI对比?
- 解决问题
- 版本:使用的AFNetworking为3.0版本?版本之间的差异有有哪些?
通过查看资料知道:
AFNetworking 1.0建立在NSURLConnection的基础API之上 ,AFNetworking 2.0开始使用NSURLConnection的基础API ,以及较新基于NSURLSession的API的选项。 AFNetworking 3.0现已完全基于NSURLSession的API,这降低了维护的负担,同时支持苹果增强关于NSURLSession提供的任何额外功能。苹果的API已经废弃了NSURLConnection,所以我们将AFNetworking需要进行3.0的迁移。
AFNetworking 3.0正式支持的iOS 7, Mac OS X的10.9, watchOS 2 , tvOS 9 和Xcode 7。
- AFNetworking的作用?
我们一般的作用是实现数据请求和文件上传下载,断点续传的功能。
- 怎样使用AFNetworking?
在Applegate中做以下处理:
/**
NSURLCache 为您的应用的 URL 请求提供了内存中(对应 memoryCapacity )以及磁盘上(对应 diskCapacity )的综合缓存机制。所以你想使用 NSURLCache 带来的好处,就需要在此处设置一个 sharedURLCache 。
*/
NSURLCache *URLCache = [[ NSURLCache alloc ] initWithMemoryCapacity : 4 * 1024 * 1024 diskCapacity : 20 * 1024 * 1024 diskPath : nil ];
[ NSURLCache setSharedURLCache :URLCache];
NSURLCache 为您的应用的 URL 请求提供了内存中(对应 memoryCapacity )以及磁盘上(对应 diskCapacity )的综合缓存机制。所以你想使用 NSURLCache 带来的好处,就需要在此处设置一个 sharedURLCache 。
*/
NSURLCache *URLCache = [[ NSURLCache alloc ] initWithMemoryCapacity : 4 * 1024 * 1024 diskCapacity : 20 * 1024 * 1024 diskPath : nil ];
[ NSURLCache setSharedURLCache :URLCache];
#pragma mark -
当你有
session task
正在运行时,这个小菊花就会转啊转。这个是自动检测的。
[[
AFNetworkActivityIndicatorManager
sharedManager
]
setEnabled
:
YES
];
封装一个类HTTPTool继承自
AFHTTPSessionManager,提供一个类方法和一个网络请求方法
在.m文件中,单例模式简单封装一下,在别的地方可以随时调用啦。
+(
instancetype
)shareTool
{
static HttpTool *_shareTool = nil ;
static dispatch_once_t onceToken;
dispatch_once (&onceToken, ^{
// 初始化 shareTool 的 base url ,此处为 @"https://api.app.net/"
_shareTool = [[ self alloc ] initWithBaseURL :[ NSURL URLWithString : kBaseURL ]];
// 设置 HTTP Client 的安全策略为 AFSSLPinningModeNone
_shareTool. securityPolicy = [ AFSecurityPolicy policyWithPinningMode : AFSSLPinningModeNone ];
});
return _shareTool;
{
static HttpTool *_shareTool = nil ;
static dispatch_once_t onceToken;
dispatch_once (&onceToken, ^{
// 初始化 shareTool 的 base url ,此处为 @"https://api.app.net/"
_shareTool = [[ self alloc ] initWithBaseURL :[ NSURL URLWithString : kBaseURL ]];
// 设置 HTTP Client 的安全策略为 AFSSLPinningModeNone
_shareTool. securityPolicy = [ AFSecurityPolicy policyWithPinningMode : AFSSLPinningModeNone ];
});
return _shareTool;
}
知识点:SSL Pining
Https对比Http已经很安全,但在建立安全链接的过程中,可能遭受中间人攻击。防御这种类型攻击的最直接方式是Client使用者能正确鉴定Server发的证书【目前很多浏览器在这方面做的足够好,用户只要不在遇到警告时还继续其中的危险操作】,而对于Client的开发者而言,一种方式保持一个可信的根证书颁发机构列表,确认可信的证书,警告或阻止不是可信根证书颁发机构颁发的证书。
SSL Pinning其实就是证书绑定,一般浏览器的做法是信任可信根证书颁发机构颁发的证书,但在移动端应用只和少数的几个Server有交互,所以可以做得更极致点,直接就在应用内保留需要使用的具体Server的证书。在安全策略中有些,后续将会提及到。
- AFNetworking和ASI对比?
AFN:使用简单,自带了网络监控功能