首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS AFNetworking 源码阅读二

NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { //挑战处理类型为...看是否有对应的user block 有的话转发出去,通过这4个参数,返回一个NSURLRequest类型参数,request转发、网络重定向....相对于它多了一个参数task,然后调用我们自定义的Block会多回传这个task作为参数,这样我们就可以根据每个task去自定义我们需要的https认证方式。...} if (completionHandler) { completionHandler(disposition); } } ●当你把添加content-type的类型为...●其中注意:fileOffset这个参数,如果文件缓存策略或者最后文件更新日期阻止重用已经存在的文件内容,那么该值为0。否则,该值表示当前已经下载data的偏移量。

1.7K20

·第三方网络下载处理框架:AFNetworking网络下载处理(调用栈与缓存策略篇)

本篇文章中,笔者将着重介绍AFNetworking的方法调用栈,以及网络图片下载和缓存策略。在此之前,笔者写了一个官方文档翻译版,点击可跳转。 ? 1....类型更深层定义。...,则先将imageView的image设置为占位图片并生成UUID,然后将请求和UUID发送出去; 若成功,则检查UUID是否和之前生成的UUID相等,以防止数据出错,没有问题则根据success是否有回调将图片发送出去...是否为空,失败则则返回信息(感觉这一句有点多余,因为调用这个方法之间已经检查了URL是否为空) 在Task没有执行时,多个请求可能会同时达到该方法,因此,需要一个字典存储该URL对应的AFImageDownloaderMergedTask...并将该自定义task的NSURLSessionDataTask赋值给task;若没有,则进行下一步 由于对于磁盘缓存作者是使用NSURLCache进行的,因此,根据存储策略进行不同操作以便于下载图片后进行磁盘缓存

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    AFNetworking源码探究(二)GET请求实现之NSURLSessionDataTask实例化

    resume]; return dataTask; } 这里面五个参数,很好理解,请求的URL、参数、进度block、成功block和失败block。...nil,这种调用方式大家是不是很熟悉,感觉很好,对了,SDWebImage下载图像的接口就是这么调用的,最后走的都是同一个方法,只是个别参数为nil或0,最后在这个参数最全的方法里面做一些差别化的处理。...:` 创建的请求由一组使用此属性指定的参数序列化的默认标头构造而成。...failure(dataTask, error); success(dataTask, responseObject); 3. dataTaskWithRequest:...方法的调用 这里调用的自定义方法...NSParameterAssert(),它的作用就是括号里面参数不为nil就继续向下执行,如果为nil就触发断言崩溃。

    51950

    iOS开发·网络请求方法总结复习(NSURLConnection,NSURLSession,AFNetworking)

    现在的苹果原生网络框架 -- NSURLSession 在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作...NSURLSessionTask本身是一个抽象类,在使用的时候,通常是根据具体的需求使用它的几个子类。...,该请求对象默认包含了请求头信息和请求方法(GET) 2)如果要发送的是POST请求,则不能使用该方法 */ NSURLSessionDataTask *dataTask...:会话对象的配置信息defaultSessionConfiguration 表示默认配置 第二个参数:谁成为代理,此处为控制器本身即self 第三个参数:队列,该队列决定代理方法在哪个线程中调用...,并把参数转换为二进制数据设置为请求体 //1.创建会话对象 NSURLSession *session = [NSURLSession sharedSession];

    3.4K30

    iOS网络——AFNetworking AFHttpSessionManager源码解析

    的使用方法进行详解,同时也会以此为扩展,讲解SDWebImage中图片下载功能的源码分析,讲解AFNetworking相关源码分析。...,最后还给了一个只使用AFURLSessionManager来创建NSURLSessionDataTask和NSURLSessionDownloadTask的栗子,但是发现创建下载任务真的很简单了,只需要传入要下载文件的...request就显得有些麻烦了,今天要介绍的AFHTTPSessionManager就是继承自AFURLSessionManager,通过名称就知道这个类为HTTP访问提供了更加便捷的方法。...absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; //如果在做序列化时出错在主线程调用...通过AFURLSessionManager和AFHTTPSessionManager源码的阅读可以学习到AFNetworking在代码设计方面的优点,以及对NSURLSession的使用更清晰了。

    1.6K80

    AFNetworking 源码阅读(v3.2.1)

    ,如果为 `GET`、`HEAD`、`DELETE`,参数会拼接在Url的后面,否则参数会设置成HTTP的请求体,并根据request指定的parameterEncoding参数编码 - (NSMutableURLRequest...,这4个代理不一定都会走,它会根据Task的类型走,如DataTask才会走NSURLSessionDataDelegate,这里还有一个问题,就是当有多个任务同时进行时,我们不好区分到底是哪个人物的回调...,当然我们可以通过比较dataTask,AFURLSessionManagerTaskDelegate代理就是为了解决这个问题的,我们就用DataTask类型来举例 - (void)addDelegateForDataTask...,可使用certificatesInBundle在目标路径下加载证书,然后调用policyWithPinningMode:withPinnedCertificates创建一个本类对象。...相关参数设置,请求参数序列化等 根据请求类型创建相关的任务NSURLSessionTask,涉及到任务回调,线程安全等 返回数据NSData的解析 HTTPS的支持 这里只是简单的总结这4步,但是每一步的实现都不易

    2.1K20

    iOS_AFNetworking 结构解析+用例分析+源码阅读

    为dataTask添加taskDelegate (详情同 downloadTask 4.2) NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest..., 出错跳转到 _out 和 忽略弃用警告宏的使用,详情见AFPublicKeyForCertificate方法 //mo: __Require_noErr_Quiet: 如果出错, 则跳转到 _out...方法, 将判断方法->判断block, 如AFURLSessionManager的respondsToSelector:方法将判断方法是否实现,改为判断相应的block是否为空,然后在代理方法里调用响应的..., decode出来的可能不是原来的对象, 有潜在风险 帮我们组装好了一些HTTP请求头 如AFHTTPRequestSerializer的初始化方法: Content-Type:请求参数类型...tasksForKeyPath:方法 NSProgress的使用, 来监听进度, 控制stack的取消,暂停,恢复 Block中使用了StrongSelf调用方法 用的 FOUNDATION_EXPORT

    58120

    iOS-网络编程(二)文件上传和断点离线下载

    :YES]; // 输出流需要开启 [self.stream open]; // 输出流写数据 // 参数一:要写入的二进制数据,bytes类型 参数二:数据的大小 [self.stream write...) 设置请求体(在请求体中按照既定的格式拼接要上传的文件参数和非文件参数等数据) 5.1 拼接文件参数 5.2 拼接非文件参数 5.3 添加结尾标记 使用NSURLConnection sendAsync...NSURLSesscion使用步骤 使用NSURLSession对象创建Task 执行Task Task的类型 ? Task的类型 2..../** 参数一:配置信息 参数二:代理 参数三:控制代理方法在哪个线程中调用 遵守代理:NSURLSessionDataDelegate *...代理方法 // 接收到服务器响应的时候调用 -(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask

    2.4K80

    iOS AFNetworking 源码阅读一

    { [mutableRequest setValue:value forHTTPHeaderField:field]; } }]; // 把各种类型的参数...,赋值要请求的request里去 2.把请求网络的参数,从array dic set这些容器类型转换为字符串,我们重点看默认的转码方式: //把参数给AFQueryStringPairsFromDictionary...,然后去递归调用自己,直到解析的是除了array dic set以外的元素,然后把得到的参数数组返回。...name=bang&phone[mobile]=xx&phone[home]=xx&families[]=father&families[]=mother&nums=1&num=2 至此,我们原来的容器类型的参数...紧接着这个方法还根据该request中请求类型,来判断参数字符串应该如何设置到request中去。如果是GET、HEAD、DELETE,则把参数quey是拼接到url后面的。

    1.3K30

    从AFNetworking源码分析到应用全解 原

    ; } 上传任务和下载任务的创建源码和上面大同小异,只是创建出的任务类型不同,它们都要进行下一步代理的设置,还以数据请求任务的代理设置为例,源码如下: - (void)addDelegateForDataTask...AFJSONRequestSerizlizaer的作用与AFHTTPRequestSerizlizaer一致,不同的是会将请求头中的Content-Type设置为application/json并且将参数格式化成...AFImageResponseSerializer类用来将返回数据解析成UIImage图片,其支持的MIMEType类型为image/tiff,image/jpeg,image/gif,image/png...上面方法的参数决定指示器是否显示。...以前我在设计全局Loading时,通常直接为他暴漏显隐两个接口,当处理多个并行请求的时候就很尴尬了,因为你无法保证Loading在最后完成的请求结束后再隐藏。

    3.2K51

    iOS 面试策略之系统框架-网络、推送与数据处理

    计算机理论 1.谈谈 HTTP 中 GET 与 POST 的区别 关键词:#方向 #类型 #参数位置 从方向上来看,GET 是从服务器端获取信息,POST 是向服务器端发送信息。...: url 出错处理不当。...正确的处理方法应该是每次请求都取消上一次请求(无论有无完成)。 代码重复冗余。代码中多次用到了切换至主线程并调用闭包的过程。实际上我们可以将整个方法扩展为一个类,然后将返回值与成员变量结合起来使用。...它是一个 XML 文件,会将某些固定类型的数据存放于其中,读写分别通过 contentsOfFile 和 writeToFile 来完成。一般用于保存 App 的基本参数。 Preference。...如果需要立刻保存,需要调用 synchronize 方法。它会将相关数据保存在同一个 plist 文件下,同样是用于保存 App 的基本参数信息。 NSKeyedArchiver。

    1.9K00

    iOS网络——NSURLSession详解及SDWebImage源码解析你要知道的NSURLSession都在这里

    创建的任务封装默认是挂起状态的,所以为了启动网络请求,调用其resume方法即可开始执行请求,当任务完成时就会执行上述回调块,当然也可以使用代理的方式监听网络请求。...,这里使用了可变的request请求对象,然后修改其请求方法,编码请求体加入参数,使用也很方便,请求完成后会执行回调块,可以根据服务端返回的数据转换为JSON数据或者HTML等格式。...,也罗列的代理协议的继承关系,但是我们无法为全局共享的NSURLSession对象设置代理,也就不能监听其网络请求,原因很简单,委托对象只有一个,而全局共享的单例对象可能有很多类都在使用。...,后面的回调方法都不会再执行,我在第一次使用NSURLSession的时候没有仔细查看官方文档导致后面几个回调方法一直没有执行,所以在实现一个回调方法时一定要弄懂每一个参数的意义,就可以避免很多坑了。...session来创建一个NSURLSessionDataTask类型的下载任务 self.dataTask = [session dataTaskWithRequest:self.request

    3K100

    iOS网络——SDWebImage SDImageDownloader源码解析你要知道的NSURLSession都在这里

    的使用方法进行详解,同时也会以此为扩展,讲解SDWebImage中图片下载功能的源码分析,讲解AFNetworking相关源码分析。...SDWebImageDownloaderHeadersFilterBlock)(NSURL * _Nullable url, SDHTTPHeadersDictionary * _Nullable headers); 上面就是一些枚举、变量、自定义类型的声明.../* 自定义token类,用于取消下载任务 这个token第二个属性其实就是SDWebImageDownloaderOperation中使用的token即回调块的字典 目的相同,都是为了取消特定的下载任务...//然后调用Operation的代理方法, - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask...来创建一个执行服务器交互数据的NSURLSessionDataTask的下载任务,并由其全权负责下载工作,接着使用NSOperationQueue实现多线程的多图片下载。

    1.6K50
    领券