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相关推荐

  1. linux网络编程二:基础socket, bind, listen, accept, connect

    linux网络编程二:基础socket, bind, listen, accept, connect 1. 创建socket #include <sys/types.h>     #inc ...

  2. Windows Socket 网络编程(二)

    来源: http://www.vckbase.com/document/viewdoc/?id=484 Windows Socket 网络编程(二) -- 套接字编程原理 作者: 冰点工作室 小鹰 [ ...

  3. Java网络编程(二) 连续发送数据

    有了建立连接的基础后,接下来尝试连续地发送和接收数据. 对于发送端比较好理解,有数据时就可以发送出去.对于接收端,就需要一直监听是否有数据发送过来.一个基本的方法就是使用 while(true) 循环 ...

  4. Java网络编程二:Socket详解

    Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...

  5. 网络编程二-LINUX网络IO模型

    目录 前言:网络编程里通用常识 一.同步和异步与阻塞和非阻塞 同步和异步 阻塞和非阻塞 两者的组合 二.五种I/O模型 阻塞I/O模型 非阻塞IO模型 IO复用模型 信号驱动IO 异步IO模型 5个I ...

  6. Android 网络编程(二) HTTP协议解析

    文章目录 引言 HTTP 简介 什么是HTTP,HTTPS 又是什么? HTTP 协议的特点 HTTP URL 格式 HTTP的报文 请求报文 请求行 请求报头 请求数据 响应保文 状态行 响应报头 ...

  7. UDP协议、广播、组播和多路复用(网络编程二)

    一.udp通信 1. 基本流程 udp发送端 udp接收端 socket() socket() bind(); bind(); sendto/recvfrom sendto/recvfrom clos ...

  8. 网络编程二:TCP/IP协议,HPPT协议

    TCP/IP基本概念 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议,是Internet最基本的协议.Internet国际互 ...

  9. linux网络编程二十:socket选项:SO_RCVTIMEO和SO_SNDTIMEO

  10. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    为什么80%的码农都做不了架构师?>>>    本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...

最新文章

  1. iPhone PHP获取文件,IOS中获取各种文件的目录路径的方法
  2. 读书笔记《React引领未来的用户界面开发框架》
  3. CF-346 D. Robot Control(反向建图spfa)
  4. 递归--递推之组合数
  5. js控制css 加载,CSS样式表的加载对于DOM解析,渲染,JS执行的阻塞问题
  6. java程序基本语句,java入门4-基本语句
  7. 如果背单词,可能需要的参考辞典...
  8. Android input touchpanel双击灭屏
  9. cad缩放_如何把jpg图片作为背景用cad描图?【AutoCAD教程】
  10. U盘中Word文档打不开怎么办?
  11. u盘工作表在计算机上打不开,U盘中无法打开的excel的解决办法
  12. 计算机音乐简单教学反思,《音乐小屋》教学反思
  13. 基于ESP8266的太空人智能时钟
  14. 如何高效的远程办公(在家办公)
  15. 有道难题- Unrepeating Nunbers
  16. 常用车载总线CAN、CAN FD、LIN、FlexRay、Ethernet介绍
  17. 北京数码视讯s905l固件_数码视讯Q6联通版S905L芯片第三方刷机免拆卡刷固件
  18. 天然气泄漏报警器工作原理是什么
  19. [原创]软件开发过程中的QA与QC
  20. Remote Desktop Connection Manager2.92 安装+基本使用

热门文章

  1. java不能修改表_java中不可修改列表的类型是什么
  2. 中山网络推广解答网站排名优化为什么总是上不了首页!
  3. 教育培训行业如何在抖音快速获客、变现?
  4. 企业为实现网络营销更要将网络营销重点放在用户价值上
  5. 浅析企业网站应该如何选择适合自己的服务器?
  6. 网页快照是什么?对SEO优化有什么作用?
  7. oracle 实现HA,oracle RAC的客户端HA配置
  8. https://www.adminsub.net/tcp-udp-port-finder/14000 ——查找tcp端口对应的服务 可以看某些端口是否让恶意软件开启...
  9. 三个大数据处理框架:Storm,Spark和Samza 介绍比较
  10. NewSQL——优化的SQL存储引擎(TokuDB, MemSQL)+?