本篇文章中,笔者将着重介绍AFNetworking的方法调用栈,以及网络图片下载和缓存策略。在此之前,笔者写了一个官方文档翻译版,点击可跳转。 ? 1....task, NSError * _Nonnull error) { NSLog(@"%@",error.userInfo); }]; } 看到这里,或许可以看manager对象的AFHTTPSessionManager.../UIKit+AFNetworking/AFImageDownloader.m 类名: AFImageDownloader.m 逻辑: 检查请求的URL是否为空,失败则则返回信息(感觉这一句有点多余...并将该自定义task的NSURLSessionDataTask赋值给task;若没有,则进行下一步 由于对于磁盘缓存作者是使用NSURLCache进行的,因此,根据存储策略进行不同操作以便于下载图片后进行磁盘缓存...4)之后就是从网络下载图片,这也要注意,作者是使用AFN进行异步下载的、会生成UUID和之前一样去检验下载后UUID是否发生改变;若成功,则将先缓存图片,然后将AFImageDownloaderMergedTask
前言 导入的最新版的AFNetworking3.1.0,突然发现找不到AFHTTPRequestOperationManager了。...于是找了一下,现在都用的是NSURLSession了,AFNetworking中用的是AFHTTPSessionManager了 测试版本AFNetworking3.1.0 官方文档 GET/POST请求...NSHTTPCookie *cookie in cookies){ [cookieStorage setCookie: cookie]; } } 文件下载 /** * AFN3.0...下载 */ - (void)downLoad{ //1.创建管理者对象 AFHTTPSessionManager *manager = [AFHTTPSessionManager...]; //3.创建请求对象 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //下载任务
作为第三方框架,AFNetworking,SDWebImage等等其实它们的老版本是基于NSURLConnection封装而成的,后来才改成的基于NSURLSession。...NSURLSessionTask本身是一个抽象类,在使用的时候,通常是根据具体的需求使用它的几个子类。...关系如下: 2.1 GET请求(NSURLRequest默认设置) 使用NSURLSession发送GET请求的方法和NSURLConnection类似,整个过程如下: 1)确定请求路径(一般由公司的后台开发人员以接口文档的方式提供...AF封装了GET和POST操作的 -- AFHTTPSessionManager AFNetworking2.0和3.0区别很大,也是因为苹果废弃了NSURLConnection,而改用了NSURLSession...,AFNetworking3.0实际上只是对NSURLSession所做的操作进行了高度封装,提供更加简洁的API供编码调用。
今天开了一个小项目 用的是pod 然后 安装好 Afnetworking之后 发现 AFHTTPRequestOperationManager 这个类没有了 ,百度之后 发现 原来是弃用了...于是找了一下,现在都用的是NSURLSession了,AFN中用的是AFHTTPSessionManager了~~ GET请求 AFHTTPSessionManager *manager = [AFHTTPSessionManager...= [NSURL URLWithString:@""]; //3.创建请求对象 NSURLRequest *request = [NSURLRequest requestWithURL...上传 /** * AFN 3.0 上传 * 有两种方式 * upLoad1 和 upLoad2 */ //第一种方法是通过工程中的文件进行上传 - (void)...WiFi网络"); break; default: break; } }] ; } 使用中遇到的一些问题
回顾 上一篇讲述了UIButton+AFNetworking的UIButton的一个分类。分析了其下载器的下载、图像的下载以及背景图像的下载。这一篇就继续讲述AFN中UIWebView的分类。...这允许通过AFNetworking加载引出的链接,并且可以确保canGoBack和canGoForward正确地更新它们的值。...---- 获取数据任务 这里面实现了UIWebView的另外一个分类_AFNetworking,利用runtime获取了数据任务。...和AFHTTPResponseSerializer对象 这个是在UIWebView的分类AFNetworking中实现的,实现方式还是使用runtime。...// AFHTTPSessionManager对象的获取 - (AFHTTPSessionManager *)sessionManager { static AFHTTPSessionManager
AFNetworking简单介绍 通过前面学习的HTTP协议的基本知识,GET/POST请求的区别,NSURLConnection 和 NSURLSession的使用,已经基本了解了网络请求的方法,但是相对使用比较麻烦...,AFNetworking是对NSURLConnection 和 NSURLSession的封装,使网络请求更加简单轻松,是一款非常有用的第三方框架。...AFNetworking3.0以后移除了对NSURLConnection的支持。 看一下AFNetworking 历史版本 以及框架 ? AFNetworking版本更新 ?...AFNetworking框架 这些在GitHub上都可以看到,可以去GitHub上查看。 二. AFNetworking使用 1....总结 我们一般在使用AFN的时候会将他封装到一个工具类中,使工具类成为一个中间层,这样便于我们使用和对代码的管理,以后当AFN更新或者我们要换网络请求第三方类库的时候,直接更改工具类就可以了,其他类中的的网络请求方法都不用改变
本篇文章中,笔者将着重挑选了AFNetworking官方文档中的使用部分进行了翻译。关于Pod以及Carthage安装第三方库的部分,可以参考笔者相关文章。...使用方法 2.1 AFURLSessionManager AFURLSessionManager用于,基于一个指定的NSURLSessionConfiguration对象,创建和管理NSURLSession...您可以使用可达性来决定,何时应自动重试请求。 可达性通知(连接可用)是发起重试时间的好时机,虽然它可能仍然失败。 网络可达性,是确定请求可能失败原因的一个有用工具。...2.4.1 允许无效的SSL证书 AFHTTPSessionManager * manager = [AFHTTPSessionManager manager ]; manager.securityPolicy.allowInvalidCertificates...单元测试 AFNetworking在Tests子目录中包含了一套单元测试。这些测试可以简单地运行,以执行在您想要测试的平台框架上的测试操作。
AFN 一、什么是AFN 全称是AFNetworking,是对NSURLConnection的一层封装 虽然运行效率没有ASI高,但是使用比ASI简单 在iOS开发中,使用比较广泛 AFN的github...(封装了常用的 HTTP 方法) GET POST UIKit + AFNetworking 分类 NSProgress :利用KVO 半自动的序列化&反序列化的功能 AFURLRequestSerialization...对苹果的网络连接检测做了一个封装 AFNetworkReachabilityManager 三、AFN基本使用 1.AFHTTPSessionManager 是AFN中最重要的对象之一 封装了HTTP...请求的常见处理 GET\POST请求 解析服务器的响应数据 创建AFHTTPSessionManager AFHTTPSessionManager *mgr = [AFHTTPSessionManager...*manager = [AFHTTPSessionManager manager]; // 2.利用网络管理者下载数据 NSURLRequest *request = [NSURLRequest
这是一篇AFNetworking的详细解析 使用示例 新建一个AFHTTPSessionManager的manager,然后用manager请求对应网址的信息,回调会调用success的completionHander...AFHTTPSessionManager* manager = [AFHTTPSessionManager manager]; [manager GET:@"www.baidu.com" parameters...* _Nonnull task, id _Nullable responseObject) { NSLog(responseObject); } failure:nil]; AFNetworking...error:(NSError *__autoreleasing *)error 新建一个dataTask - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest...对应的AFURLSessionManagerTaskDelegate; 设置Task的AFURLSessionManagerTaskDelegate时,用了NSLock,进行多线程同步; 任务的调度采用了工厂模式
AFNetworking项目地址 https://github.com/AFNetworking/AFNetworking 下载打开后目录 AFNetworking 1.AFNetworking...文件下是实现HTTP请求的类 2.UIKit+AFNetworking文件下是实现图片下载的类 下面我们主要看AFNetworking的HTTP请求实现,我们使用AF发送一个请求很简单,如下面的一个GET...请求的例子 // 请求管理器 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 参数JSON格式 manager.requestSerializer...AFSSLPinningMode SSLPinningMode; // 这个属性保存着所有的可用做校验的证书的集合 // AFNetworking默认会搜索工程中所有.cer的证书文件 // 如果想制定某些证书...到此AFNetworking文件下的类就全部读完了,实际我读AF就是想了解,在请求时,AF到底都为我们做了什么,总结一下: 请求体NSURLRequest的封装,涉及到构建head信息、Request
challenge; //取消凭证验证 - (void)cancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; //使用默认提供的凭证行为...AFNetworking进行自签名证书HTTPS请求的认证 使用AFNetworking也可以很方便的进行自签名证书的认证,还以上一节博客搭建的HTTPS环境为例,示例代码如下: -(void)...afHttps{ NSURLRequest * req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://localhost...securityPolicy.validatesDomainName = NO;//是否需要验证域名,默认YES AFHTTPSessionManager *_manager...= [AFHTTPSessionManager manager]; _manager.responseSerializer = [AFHTTPResponseSerializer serializer
大名鼎鼎的AFNetWorking,做iOS开发的人都知道吧。...AFNetWorking一款轻量级网络请求开源框架,基于iOS和mac os 网络进行扩展的高性能框架,大大降低了iOS开发工程师处理网络请求的难度,让iOS开发变成一件愉快的事情。...+AFNetworking UIProgressView+AFNetworking UIRefreshControl+AFNetworking UIWebView+AFNetworking UIButton...+AFNetworking UIImageView+AFNetworking 首先我们简单的写个get请求: AFHTTPSessionManager *manager = [[AFHTTPSessionManager...description来进行升序排列 // 因为对象的description返回的是NSString,所以此处compare:使用的是NSString的compare函数 // 即@[@
请求 // 1.创建请求路径(url) NSURL *url = [NSURL URLWithString:@""]; // 2.通过请求路径(url)创建请求对象(request) NSURLRequest...*request = [NSURLRequest requestWithURL:url]; // 3.向服务器发送同步请求(data) NSData *data = [NSURLConnection...NSURLSessionTask *)task didCompleteWithError:(NSError *)error { NSLog(@"%s", __func__); } ``` - ##AFNetworking...*error) { NSLog(@"请求失败---%@", error); }]; ``` ```objc // 第二种GET请求 // AFHTTPSessionManager...内部包装了NSURLSession AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; NSDictionary *
在AFNetworking中,大量使用的线程安全的开发技巧,读此源码也是一次很好的多线程学习机会。...每次读优秀的代码都是一次深刻的学习,每一次模仿,都是创造的开始! 二、核心源码分析 平时我们在使用AFNetworking框架时,大多只使用其中的请求管理功能。...在使用AFNetworking进行网络请求时,如果你有过抓包,你一定会发现,在发送的普通HTTP请求的HEAD中默认包含了许多信息,其实这些都是AFHTTPRequestSerizlizaer类做的,他默认会向请求头中添加...当实际使用的内存超过最大容量时,缓存池会自动清理到期望容量。...缓存器 + (NSURLCache *)defaultURLCache; //使用初始化方法新建对象 - (instancetype)initWithSessionManager:(AFHTTPSessionManager
AFNetworking的第一个重大突破就是将两者结合。...1.3.4 功能特性 1.3.4.1 序列化 AFNetworking2.0 新构架的突破之一是使用序列化来创建请求、解析响应。...现在你可以直接使用它,或者使用 AFHTTPRequestOperationManager /AFHTTPSessionManager 的属性。...):工作模式类似于原来的NSURLConnection,使用的是基于磁盘缓存的持久化策略,使用用户keychain中保存的证书进行认证授权。...sharedSession方法,该类使用共享的会话,该会话使用全局的Cache,Cookie和证书。
AFNetworking是一个轻量级的iOS网络通信类库。它建立在NSURLConnection和NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单。...AFNetworking框架的 Github地址 使用AFNetwork来检测网络状态 -(void)reach { /* AFNetworkReachabilityStatusUnknown...dictionary { NSURL *url = [NSURL URLWithString:urlString]; AFHTTPSessionManager *manager = [AFHTTPSessionManager...)dictionary { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; //返回格式 //这里得到的是...*)dictionary WithImageName:(NSString *)imageName { AFHTTPSessionManager *manager = [AFHTTPSessionManager
AFHTTPSessionManager (子类) AFHTTPSessionManager继成自AFURLSessionManager,负责创建Get/Head/Post/Put/Patch/Delete...的使用 1.遍历监听自身属性的变化, 将变化的值保存到mutableSet中, 在创建NSMutableURLRequest时设置 2.当某个属性的getter方法使用其他属性的值计算返回值时, 重写...tasksForKeyPath:方法 NSProgress的使用, 来监听进度, 控制stack的取消,暂停,恢复 Block中使用了StrongSelf调用方法 用的 FOUNDATION_EXPORT...看了一遍,先做一下笔记,以后回顾知新了再更新~ 小女子献丑了,文章有哪里不对的,望各位看官指正~ 阅读注释用Demo地址 参考文章如下: AFNetworking(v3.1.0) 源码解析 为何需要使用...HTTPs AFNetworking到底做了什么?
建议iOS 7之后的开发者在 AFHTTPSessionManager的基础上再进行一次封装,封装一些开发者自己的需要。...而针对iOS 6以及更早的则建议使用AFHTTPRequestOperationManager。...url做了一下格式化处理,请求序列化默认用的是AFHTTPRequestSerializer进行序列化,返回结果的序列化默认用的是AFJSONResponseSerializer 下面这个方法是AFHTTPSessionManager...,请求方式都一样,最终都汇总到一个方法, AFHTTPSessionManager的封装步骤 1、根据不同的HTTP Method和不同的请求参数序列化方式,以及URL合成,从AFURLRequestSerialization...,NSURLSession提供了下面网络请求三种的API,返回三种不同的Task - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest
Snip20160929_1.png “undefined symbol: __gxx_personality_v0” 是比较常见的一种报错,是因为在linux下编译C++程序,如果使用gcc命令进行编译...8.使用 AFNetworking 3.0上传图片出现超时,无法上传等问题 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];...解决办法 重启电脑,再次打开浏览器 输入测试链接,反应飞快,自己的程序跑起来也是很快,AFNetworking 3.0上传图片 也没有任何问题,Mac系统的问题造成的吗????...9.使用 AFNetworking 3.0上传图片时由于 fileName没有格式后缀造成的一系列debug 过程 使用 AFNetworking 3.0上传图片时,在成功的回调中返回了 responseObject...字符串,在排查出问题后 发现是由于: fileName:@"submit"没有设置格式造成的 PS UTF-8有效率的空间使用(仅就西方语言来讲),以及不需要操心字节顺序问题使得 UTF-8 成为存储和交流
with an `AFImageResponseSerializer`, and a shared `NSURLCache` for all image downloads. */ // 用于下载图像的AFHTTPSessionManager...@returns The default `NSURLCache` instance. */ // 使用常用的使用参数值创建一个默认的NSURLCache + (NSURLCache *)defaultURLCache...具有常用的使用参数值。...the given session manager, download prioritization, maximum active download count and image cache. // 使用给定的会话管理器...缓存和URL请求缓存策略允许使用缓存。
领取专属 10元无门槛券
手把手带您无忧上云