NSURLSessionDataDelegate

- URLSession:dataTask:didReceiveResponse:completionHandler:

告诉代理,该data task获取到了服务器端传回的最初始回复(response)。注意其中的completionHandler这个block,通过传入一个类型为NSURLSessionResponseDisposition的变量来决定该传输任务接下来该做什么:

//该task正常进行
-NSURLSessionResponseAllow 
//该task会被取消
NSURLSessionResponseCancel 
//当前的data task 会取消,产生新的 download task
NSURLSessionResponseBecomeDownload 
会调用URLSession:dataTask:didBecomeDownloadTask:方法来新建一个download task以代替当前的data task

=================================================

- URLSession:dataTask:didBecomeDownloadTask:

如果data task变化成了下载任务(download task),那么就会调用该代理方法

比如在
-URLSession:dataTask:didReceiveResponse:completionHandler:给completionHandler方法传递NSURLSessionResponseBecomeDownload,就会使data task变成download task。而且之前的data task不会再响应代理方法了。

=================================================

- URLSession:dataTask:didReceiveData:

当接收到部分期望得到的数据(expected data)时,会调用该代理方法。

该代理方法可能会调用多次(比如分片获取数据),你需要自己实现函数将所有数据整合在一起。

- URLSession:dataTask:willCacheResponse:completionHandler:

询问data task或上传任务(upload task)是否缓存response。

当task接收到所有期望的数据后,session会调用此代理方法。如果你没有实现该方法,那么就会使用创建session时使用的configuration对象决定缓存策略。这个代理方法最初的目的是为了阻止缓存特定的URLs或者修改NSCacheURLResponse对象相关的userInfo字典。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容