NSURLSession的简单使用(不同于NSURLConnection,仅仅支持异步请求)

dataTask,简单请求直接block里面执行,不走代理

NSURLSessionDataTaskDelegate:

签订代理:

-NSURLConfiguration *configuration = [NSURLConfiguration defaultConfiguration]

-NSURLSession *session = [NSURLSession sessionWithConfiguration:delegate:queue:nil]

实现相应的代理方法:

-didRecieveResponse

completionHander(…)

三种类型:

NSURLSessionResponseCancer = 0;默认,取消任务

NSURLSessionResponseAllow = 1;任务继续执行

NSURLSessionResponseBecomeDownload = 2;dataTask变为downloadTask

根据response,拿到数据长度

1.将response转为NSHTTPURLResponse

2.获取响应头 NSDictionary *header = [httpResponse allHeaders];

3.获取长度 CGFloat length = [header[@“Content-Length”] longlongValue];

-didReceiveData

收到data,举个例子,图片的渐进式加载

1.[gData appendData];

2.根据现有data更新imageSouceRef

CGImageSourceUpdate(container,data,final:YES|NO);

3.创建CGImageRef

CGImageSourceCreateAtIndex(container,0,option:null);

4.创建image

UIImage *curImage = [UIImage imageWithCGImage:imageRef];

5.释放imageRef

CGImageRelease(imageRef);

-didCompleteWithError

任务完成后的相关处理

NSURLDownloadDelegate

代理方法:

-didWriteData

totalBytesWritten:当前写入的data

totalBytesExpectedToWritten:总计要写入的data

-didResumeAtOffset

fileOffset:已经写入的流

expectedTotalBytes:全部数据

task的三种状态:

resume,suspend,cancer

-didFinishDownloadingToUrl

location:临时的存储路径,使用fileManager移位

1.创建路径 NSString *path  = [NSSearchDirectoryInDomain(NSCacheDirectory,NSUserDomainMask,YES) lastObject] stringByAppendingPathComponent:@“filename.type”];

2.移位 [NSFileManager default] moveItemAtPath:location.path toPath:path error:]

根据location拿到data

NSData *data = [NSData dataWithContentsOfUrl:location];

-didCompleteWithError

NSURLSession的简单使用的更多相关文章

  1. 2016 - 1 - 24 NSURLSession (一)

    一: NSURLSession简介 1.实施步骤 1.1 使用 NSURLSession对象 创建TASK ,然后执行TASK 2.TASK的类型: 二: NSURLSession的简单使用: - ( ...

  2. OC - 15.NSURLSession与NSURLSessionTask

    简介 NSURLSession也能完成网络请求 NSURLConnection在iOS9中不推荐使用,NSURLSession是iOS9中推荐使用的网络请求方式 NSURLSession需要与NSUR ...

  3. iOS之网络请求NSURLSession剖析

    2013年的WWDC大会上,苹果推出了NSURLSession,对Foundation URL加载系统进行了彻底的重构,提供了更丰富的API来处理网络请求,如:支持http2.0协议.直接把数据下载到 ...

  4. Cocoa Touch(五):网络请求 NSURLSession/AFNetworking, GCD, NSURLResquest

    NSURLRequest 网络请求的关键的就是NSURLRequest类,它的实例表示了请求报文实体以及请求的缓存策略等等,各种网络框架的最终目标都是把这个对象编译成为请求报文发送出去.下面用一个实例 ...

  5. NSURLSession 和 NSURLConnection 的比较

    一.NSURLConnection 1.iOS2.0出现,iOS9.0后废弃的网络请求发送方式 2.可以在初始化时确定发送同步还是异步的请求,并且可以选择执行队列. +(void)sendAsynch ...

  6. iOS网络-03-NSURLSession与NSURLSessionTask

    简介 NSURLSession也能完成网络请求 NSURLConnection在iOS9中不推荐使用,NSURLSession是iOS9中推荐使用的网络请求方式 NSURLSession需要与NSUR ...

  7. iOS之断点下载,使用NSURLSession简单封装

    最近公司需要做个文件管理的功能模块,刚交到博主手上时,头都大了.因为没做过这方面的东西,只好咬牙加班,并请教某位大神,指点了一下,清楚研究方向,找了网上大量资料,最后实现简单的封装. 上代码:.h文件 ...

  8. [OC] NSURLSession

    有的程序员老了,还没听过NSURLSession 有的程序员还嫩,没用过NSURLConnection 有的程序员很单纯,他只知道AFN. NSURLConnection在iOS9被宣布弃用,NSUR ...

  9. iOS开发之Alamofire源码解析前奏--NSURLSession全家桶

    今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession.如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结 ...

随机推荐

  1. 编写程序,计算当n=10000,20000,30000...100000时,π的值.求π的近似公式 π=4*(1-1/3+1/5-1/7+1/9-1/11+1/13-...+1/(2n-1)-1/(2n+1))

    该程序是求的 π 近似值,所以随着 i 的增大,值会无线接近于 3.1415926... 代码示例 : package judgment;/** * 编写程序,计算当n=10000,20000,300 ...

  2. java面试一日一题:java中的垃圾回收器

    问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...

  3. IP子网如何划分?so easy!

    IP地址与子网掩码 1. IP地址划分 1.1 IP地址 1.2 由两部分组成 1.3 IP地址的分类 1.4 IP地址的规划原则 2.子网掩码划分 2.1 32个二进制位 2.2IP地址和子网掩码作 ...

  4. SSM框架的配置整合(包含配置文件代码)

    由于SSM框架学习都要去网上或者以前的项目拷贝相同的代码,所以我在此把自己用到的配置文件全放在这里,帮助自己,帮助别人 首先开始前导入依赖和处理静态资源导出问题 <dependencies> ...

  5. Go基础结构与类型05---程序运算

    package main import ( "fmt" "math" ) func main() { /*加减乘除,求余*/ fmt.Println(" ...

  6. SLAM相机定位

    SLAM相机定位 摘要 深度学习在相机定位方面取得了很好的结果,但是当前的单幅图像定位技术通常会缺乏鲁棒性,从而导致较大的离群值.在某种程度上,这已通过序列的(多图像)或几何约束方法解决,这些方法可以 ...

  7. deeplearning模型量化实战

    deeplearning模型量化实战 MegEngine 提供从训练到部署完整的量化支持,包括量化感知训练以及训练后量化,凭借"训练推理一体"的特性,MegEngine更能保证量化 ...

  8. AI框架外部用户贡献代码

    AI框架外部用户贡献代码 概述 飞桨是百度自主研发的一款开源的深度学习框架,是主流深度学习框架中首个完全国产化的产品,已经在农业.医疗.林业.科研.服务等领域成功应用.无论是已入职场的深度学习从业者. ...

  9. pytorch空间变换网络

    pytorch空间变换网络 本文将学习如何使用称为空间变换器网络的视觉注意机制来扩充网络.可以在DeepMind paper 阅读更多有关空间变换器网络的内容. 空间变换器网络是对任何空间变换的差异化 ...

  10. 国内操作系统OS分析(上)

    国内操作系统OS分析(上) 一.操作系统(OS)概述 操作系统(OS,Operating System),是管理.控制计算机软硬件资源的计算机程序,并为用户提供一个与系统交互的操作界面.OS是配置在计 ...