网络编程(二)NSURLSessionConfiguration
1.NSURLSession有三种工作模式
(1)defaultSessionConfiguration(默认):使用的是基于磁盘缓存的持久化策略,Cache,Cookie。
(2)ephemeralSessionConfiguration(短暂):该模式不使用磁盘保存任何数据。所有和会话相关的caches,证书,cookies等都被保存在RAM中,因此当程序使会话无效,这些缓存的数据就会被自动清空。
(3)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier(后台):在后台完成上传和下载,在创建Configuration对象的时候需要提供一个NSString类型的标识。
我们可以设置NSURLSessionConfiguration的相关属性来对NSURLSession进行配置,如果不对NSURLSession进行配置,采用默认的工作模式。
下面上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
- ( void )configSession
{
//1.构造URL
NSURL *url = [ NSURL URLWithString:@ "http://news-at.zhihu.com/api/3/news/latest" ];
//2.配置NSURLSessionConfiguration
NSURLSessionConfiguration *config = [ NSURLSessionConfiguration defaultSessionConfiguration];
//允许使用蜂窝网络
config.allowsCellularAccess = YES ;
//设置超时时间(秒)
config.timeoutIntervalForRequest = 10;
//3.创建session对象时使用config进行配置
NSURLSession *session = [ NSURLSession sessionWithConfiguration:config delegate: self delegateQueue:[ NSOperationQueue mainQueue]];
//4.创建网络任务
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url];
//5.发送网络请求
[dataTask resume];
}
|
发送网络请求后要在代理里面进行相关操作
这里代理遵守的协议有很多种可以选择,根据网络任务(Task)的不同遵守不同的协议,本例遵守<NSURLSessionDataDelegate>协议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#pragma mark - NSURLSessionDataDelegate
//监听网络传输完成的事件
- ( void )URLSession:( NSURLSession *)session task:( NSURLSessionTask *)task
didCompleteWithError:(nullable NSError *)error {
NSLog (@ "网络传输完成" );
}
//收到了响应包中的状态码以及响应头数据,只会被调用一次
- ( void )URLSession:( NSURLSession *)session dataTask:( NSURLSessionDataTask *)dataTask didReceiveResponse:( NSURLResponse *)response completionHandler:( void (^)( NSURLSessionResponseDisposition ))completionHandler {
NSHTTPURLResponse *httpResponse = ( NSHTTPURLResponse *)response;
NSLog (@ "响应状态码:%ld" , httpResponse.statusCode);
//NSURLSessionResponseAllow:继续传输响应体数据
//NSURLSessionResponseCancel:取消当前传输,相当于task cancel
completionHandler( NSURLSessionResponseAllow );
}
//收到响应体的数据--此方法可能会被调用多次
- ( void )URLSession:( NSURLSession *)session dataTask:( NSURLSessionDataTask *)dataTask didReceiveData:( NSData *)data {
//如果要获取到完整的数据要创建一个全局的NSMutableData对每次接收到的data进行拼接
NSLog (@ "每次接收到数据包的长度:%li" , data.length);
}
|
转载于:https://www.cnblogs.com/luoxiaofu/p/5220752.html
网络编程(二)NSURLSessionConfiguration相关推荐
- linux网络编程二:基础socket, bind, listen, accept, connect
linux网络编程二:基础socket, bind, listen, accept, connect 1. 创建socket #include <sys/types.h> #inc ...
- Windows Socket 网络编程(二)
来源: http://www.vckbase.com/document/viewdoc/?id=484 Windows Socket 网络编程(二) -- 套接字编程原理 作者: 冰点工作室 小鹰 [ ...
- Java网络编程(二) 连续发送数据
有了建立连接的基础后,接下来尝试连续地发送和接收数据. 对于发送端比较好理解,有数据时就可以发送出去.对于接收端,就需要一直监听是否有数据发送过来.一个基本的方法就是使用 while(true) 循环 ...
- Java网络编程二:Socket详解
Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...
- 网络编程二-LINUX网络IO模型
目录 前言:网络编程里通用常识 一.同步和异步与阻塞和非阻塞 同步和异步 阻塞和非阻塞 两者的组合 二.五种I/O模型 阻塞I/O模型 非阻塞IO模型 IO复用模型 信号驱动IO 异步IO模型 5个I ...
- Android 网络编程(二) HTTP协议解析
文章目录 引言 HTTP 简介 什么是HTTP,HTTPS 又是什么? HTTP 协议的特点 HTTP URL 格式 HTTP的报文 请求报文 请求行 请求报头 请求数据 响应保文 状态行 响应报头 ...
- UDP协议、广播、组播和多路复用(网络编程二)
一.udp通信 1. 基本流程 udp发送端 udp接收端 socket() socket() bind(); bind(); sendto/recvfrom sendto/recvfrom clos ...
- 网络编程二:TCP/IP协议,HPPT协议
TCP/IP基本概念 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议,是Internet最基本的协议.Internet国际互 ...
- linux网络编程二十:socket选项:SO_RCVTIMEO和SO_SNDTIMEO
- 脑残式网络编程入门(三):HTTP协议必知必会的一些知识
为什么80%的码农都做不了架构师?>>> 本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...
最新文章
- iPhone PHP获取文件,IOS中获取各种文件的目录路径的方法
- 读书笔记《React引领未来的用户界面开发框架》
- CF-346 D. Robot Control(反向建图spfa)
- 递归--递推之组合数
- js控制css 加载,CSS样式表的加载对于DOM解析,渲染,JS执行的阻塞问题
- java程序基本语句,java入门4-基本语句
- 如果背单词,可能需要的参考辞典...
- Android input touchpanel双击灭屏
- cad缩放_如何把jpg图片作为背景用cad描图?【AutoCAD教程】
- U盘中Word文档打不开怎么办?
- u盘工作表在计算机上打不开,U盘中无法打开的excel的解决办法
- 计算机音乐简单教学反思,《音乐小屋》教学反思
- 基于ESP8266的太空人智能时钟
- 如何高效的远程办公(在家办公)
- 有道难题- Unrepeating Nunbers
- 常用车载总线CAN、CAN FD、LIN、FlexRay、Ethernet介绍
- 北京数码视讯s905l固件_数码视讯Q6联通版S905L芯片第三方刷机免拆卡刷固件
- 天然气泄漏报警器工作原理是什么
- [原创]软件开发过程中的QA与QC
- Remote Desktop Connection Manager2.92 安装+基本使用
热门文章
- java不能修改表_java中不可修改列表的类型是什么
- 中山网络推广解答网站排名优化为什么总是上不了首页!
- 教育培训行业如何在抖音快速获客、变现?
- 企业为实现网络营销更要将网络营销重点放在用户价值上
- 浅析企业网站应该如何选择适合自己的服务器?
- 网页快照是什么?对SEO优化有什么作用?
- oracle 实现HA,oracle RAC的客户端HA配置
- https://www.adminsub.net/tcp-udp-port-finder/14000 ——查找tcp端口对应的服务 可以看某些端口是否让恶意软件开启...
- 三个大数据处理框架:Storm,Spark和Samza 介绍比较
- NewSQL——优化的SQL存储引擎(TokuDB, MemSQL)+?