- 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字典。