一、创建一个Session,并且对其进行初始化

  包含三种创建方式:

   1、+ (NSURLSession *)sharedSession  单例模式
   2、+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration 这是常规的方式
   3、+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(nullable id <NSURLSessionDelegate>)delegate     delegateQueue:(nullable NSOperationQueue *)queue  这是常用的方式
  
  配置方式是也是有三种:
   1、+ (NSURLSessionConfiguration *)defaultSessionConfiguration 常规的配置
   2、+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration 临时配置
   3、+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier: 运行在后台的配置
 
  注意:设置Configuration的值不会改变当前Session方式,只有当你重新初始化一个Session的时候生效
    NSURLSessionConfiguration *myconfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"backgroundsession"];
//请求的缓存策略
myconfiguration.requestCachePolicy = NSURLRequestUseProtocolCachePolicy;
//数据传输超时,当恢复传输时会清零
myconfiguration.timeoutIntervalForRequest = ;
//单条请求超时,决定一条请求的最长生命周期
myconfiguration.timeoutIntervalForResource = ;
//请求的服务类型
myconfiguration.networkServiceType = NSURLNetworkServiceTypeDefault;
//是否允许使用移动网络(电话网络)default is YES
myconfiguration.allowsCellularAccess = YES;
//后台模式生效,YES允许自适应系统性能调节
myconfiguration.discretionary = YES; self.testSession = [NSURLSession sessionWithConfiguration:myconfiguration delegate:self delegateQueue:[NSOperationQueue currentQueue]];

二、实现代理(Session-Level)

  选用第三种初始化方式创建的Session会有三个Session级别的代理供大家使用

//session关闭回调
-(void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error
{
NSLog(@"%s,%@",__func__,error);
}
//证书安全问题
-(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler
{ } //后台网络任务完成
// 将回调 :-application:handleEventsForBackgroundURLSession:completionHandler:
-(void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session
{ }

NSURLSession的使用(1)的更多相关文章

  1. [OC] NSURLSession

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

  2. NSURLSession详解

    导语 现在NSURLConnection在开发中会使用的越来越少,iOS9已经将NSURLConnection废弃,现在最低版本一般适配iOS7,所以也可以使用. NSURLConnection相对于 ...

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

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

  4. [swift]NSURLSession

    一.简单说明 在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作. NSURLSession ...

  5. iOS网络2——NSURLSession使用详解

    原文在此 一.整体介绍 NSURLSession在2013年随着iOS7的发布一起面世,苹果对它的定位是作为NSURLConnection的替代者,然后逐步将NSURLConnection退出历史舞台 ...

  6. NSURLSession网络请求

    个人感觉在网上很难找到很简单的网络请求.或许是我才疏学浅 ,  所有就有了下面这一段 , 虽然都是代码 , 但是全有注释 . //1/获取文件访问路径 NSString *path=@"ht ...

  7. 网络第三节——NSURLSession

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

  8. 网络请求 __ NSURLSession

    首先配置into.plist文件 1. 添加 App Transport Security Settings , Type栏自动变为Dictionary 2. 点击左边箭头,使之向下,点击右边加号,添 ...

  9. NSURLSession总结

    NSURLSession(会话)(ios7新增加) //英译  Session:会议,讲话 configuration:结构,配置 expect:预期 resume:取得 suspend:推迟 pro ...

  10. NSURLSession访问网络数据

    1.NSMutableURLRequest的设置 //创建NSMutableURLRequest对象 NSMutableURLRequest *request = [NSMutableURLReque ...

随机推荐

  1. 教你50招提升ASP.NET性能(十六):把问题仍给硬件而不是开发人员

    (27)Throw hardware at the problem, not developers 招数27: 把问题仍给硬件而不是开发人员 As developers, we often want ...

  2. PL/pgSQL的RETURN QUERY例子

    我的例子: 数据准备: create table custinfo(custid integer,callingcnt integer); ,),(,),(,); 函数生成: CREATE OR RE ...

  3. 为什么监听不到开机广播action.BOOT_COMPLETED

    为什么监听不到开机广播action.BOOT_COMPLETED 1. 说明 Android手机开机后,会发送android.intent.action.BOOT_COMPLETED广播,监听这个广播 ...

  4. Python的包管理工具Pip

    接触了Ruby,发现它有个包管理工具RubyGem非常好用,而且有非常完备的文档系统http://rdoc.info 发现Python下也有相同的工具,包含easy_install和Pip.只是,我没 ...

  5. Treeview1列表拒绝添加重复信息

    function ItemExist(Text:string;TreeView:TTreeView):Boolean; var   i: Integer; begin   Result:=False; ...

  6. 【android】在eclipse中查看genymotion模拟器的sd卡文件夹

    假设用google自带模拟器或者真机调试时,sd卡文件夹是在/mnt/sdcard.这个相信大家都知道. 但是今天用genymotion调试时.发现根本打不开/mnt/sdcard这个文件夹,当时也没 ...

  7. ios开发——实战Swift篇&简单项目的实现

    学了这么久的swift语法和相关技术,今天忍不住手痒痒就写了一个swift的小项目,这个项目非常简单(只是使用一个UITableView),但是里面的功能却非常有用. 我们要实现的功能是这样的: 程序 ...

  8. Python dictionary implementation

    Python dictionary implementation http://www.laurentluce.com/posts/python-dictionary-implementation/ ...

  9. Python学习 之 对内存的使用(浅拷贝和深拷贝)

    1.浅拷贝:对引用的拷贝,只拷贝父对象 cope() 深拷贝:对对象资源的拷贝 deepcope()

  10. 1085. Perfect Sequence (25)

    the problem is from PAT,which website is http://pat.zju.edu.cn/contests/pat-a-practise/1085 At first ...