一、NSURLConnection

1、iOS2.0出现,iOS9.0后废弃的网络请求发送方式

2、可以在初始化时确定发送同步还是异步的请求,并且可以选择执行队列。

+(void)sendAsynchronousRequest

+(nullable NSData *)sendSynchronousRequest: 这里是有返回值的

3、使用NSURLConnection发送异步请求,这样下载大数据会存在问题(要全部加载到内存中,再写入),内存会爆。

4、使用 NSURLConnection 的代理方法 dataDelegate  ,注意:NSURLConnection有多个代理协议,downloadDelegate不好用。

5、NSURLConnection实例化对象,实例化开始,默认请求就发送(同步发送),不需要start。

6、通过代理方法,进行文件的下载操作(大数据),配合NSFileHandle/ NSOutputStream

7、start  没什么卵用

cancel  可以停止请求的发送

二、NSURLSession

1、iOS 7.0/2013,替代NSURLConnection,简单,方便。都是异步发送

2、实例化NSURLSession对象

(1)单例:对于简单的,不需要监听网络请求过程的网络会话。

(2)自定义对象:需要监听网络进度,自定义 NSURLSession 对象,并且设置代理。这时还需要一个 NSURLSessionConfiguration,可以设置全局的网络访问属性.

(3)使用代理的注意:

<1>一旦添加了网络完成之后的blcok回调,那么block回调就会被优先执行,代理方法就会失效!

  <2>文件下载完毕/网络请求完成之后下载的文件就会从tmp路径中自动删除!

(4)网络任务的具体概念:三种网络任务类型:普通请求(dataTask),文件下载(downloadTask),文件上传(uploadTask)

(5)关于断点续传:ResumeData

  <1>暂停/取消下载(cancelByProducingResumeData),一旦执行下面取消下载任务的方法,会自动生成一个 resumeData ,就是下次断点续传开始需要的数据!

  <2>通过之前下载的数据 ResumeData ,实例化一个下载任务,用于断点续传.

二、NSURLConnection 和 NSURLSession的简单比较

1、前者以在iOS9.0已经被废弃,后者iOS7.0诞生

2、前者可以在初始化时确定发送同步还是异步的请求,并且可以选择执行队列。而后者只能异步发送网络请求(默认子线程执行)。

3、实例化方式不同

(1)前者有类方法,可以不用实例化直接发送同步或异步请求。

(2)后者有单例对象,也可自定义对象。

4、网络任务概念的区别

NSURLSession 采用网络任务的概念:task 来实现网络请求。 一共三种不同的网络任务(普通,上传,下载)

5、关于请求的启动

NSURLSession 默认实例化网络任务后,是挂起的,需要resume

6、使用场景区别:

(1) 普通的网络任务:服务器返回的是 JSON/XML/HTML 等数据量比较小. 与 NSUrlConnection 的异步网络请求没有任何区别!

(2) 文件上传: 默认NSUrlSession 的文件上传走的是 PUT 请求.文件上传跟 NSUrlConnection 也基本没有区别.

(3) 文件下载: 如果服务器返回的是一些比较大的数据,NSUrlSession 的下载做的是最好的,封装的非常全面

7、关于下载“大文件”时的不同

(1)  NSUrlConnection 使用dataDelegate监控下载进度,需要配合NSFileHandle 或者 NSOutputStream(文件不存在可以创建)进行数据的存储。

NSUrlSession 下载使用自己的方法(生成downloadTask,然后resume,在回调中提供数据)

(2)NSURLSession下载完成后,会删除内容(temp文件夹中的文件)

8、关于断点续传的不同

(1)NSUrlConntection 需要使用代理方法,同时,设置请求头的rang属性

(2)通过暂停或取消,生成resumeData,需要续传时,根据resumeData生成新任务。

NSURLSession 和 NSURLConnection 的比较的更多相关文章

  1. iOS NSURLSession VS NSURLConnection

    NSURLSession VS NSURLConnection NSURLSession可以看做是NSURLConnection的进化版,其对NSURLConnection的改进点有: * 根据每个S ...

  2. NSURLSession与NSURLConnection区别

    1. 使用现状      NSURLSession是NSURLConnection 的替代者,在2013年苹果全球开发者大会(WWDC2013)随ios7一起发布,是对NSURLConnection进 ...

  3. NSURLSession/NSURLConnection的上传文件方法(已做了更新)

    最好的学习方法就是 领悟 + 证悟. 此篇文章的理论基础主要是与HTTP网络通信协议相关.为集中精力,可以先把TCP/IP协议这些置之不理,也就是先只关注HTTP的请求和响应的结构.HTTP完整的原理 ...

  4. NSURLSession、NSURLConnection

    NSURLSesstion GET方法 block回调方法NSString * urlStr = @"http://192.168.1.247:8100/stream?cname=cha_2 ...

  5. NSURLSession和NSURLConnection

    iOS9.0之后NSURLConnection被注销,采用NSURLSession,先介绍NSURLSession,然后介绍NSURLConnection 1.NSURLSession: post请求 ...

  6. ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析

    NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...

  7. 从 NSURLConnection 到 NSURLSession

    iOS 7 和 Mac OS X 10.9 Mavericks 中一个显著的变化就是对 Foundation URL 加载系统的彻底重构. 现在已经有人在深入苹果的网络层基础架构的地方做研究了,所以我 ...

  8. NSURLSession使用说明及后台工作流程分析

    原文摘自http://www.cocoachina.com/industry/20131106/7304.html NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConne ...

  9. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

随机推荐

  1. CSS——样式隐藏

    overflow:hidden:  溢出隐藏 visibility:hidden:   隐藏元素    隐藏之后还占据原来的位置. display:none:      隐藏元素    隐藏之后不占据 ...

  2. [Windows Server 2012] Filezilla安装方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:FileZ ...

  3. AjaxDemo

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. Java中的方法重写

    方法的重载: 在同一个类中,出现多个同名的方法,参数列表不同,与返回值类型,修饰符无关 方法的重写: 子类中出现和父类中一模一样的方法(包括返回值类型,方法名,参数列表) 方法重写的注意事项: 1.重 ...

  5. Java切换JDK版本的方法及技巧

    由于项目的不同安排,之前项目开发时,使用的jdk版本为1.8,现临时接手一以前项目,需要更换jdk版本. 安装 不再赘述,去Oracle网站(https://www.oracle.com/techne ...

  6. git 缓存密码导致的不能和远程仓库交互unable to access... 403错误

    尝试了各种方式,包括卸载等最终解决方案: 查看本机的credential 是否已经被清空. 如果输入了 git config credential.helper 命令之后没有输出,说明 git 的配置 ...

  7. Python 函数 day3

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  8. dp有哪些种类

    dp有哪些种类 一.总结 一句话总结: 二.dp动态规划分类详解 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. * ...

  9. 求n!(高精度问题)

    #include <iostream> #include <stdio.h> #define MAX 10000 using namespace std; void Mul(i ...

  10. uva-156(Ananagrams UVA - 156)

    map容器的模板题,判断是否能交换字母顺序变成另外一个单词,只需要先把单词都变成小写字母.然后再按字母字典序排序,放入map中进行计数,然后把计数为一的再放入另一个容器,再排序输出即可 我的代码(刘汝 ...