NSURLSession的使用(1)

一、创建一个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 = 5;
    //单条请求超时,决定一条请求的最长生命周期
    myconfiguration.timeoutIntervalForResource = 5;
    //请求的服务类型
    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
{

}
时间: 2024-08-28 16:58:16

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

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对info.plist文件进行配置. 如何配置,请参考:

第八篇、封装NSURLSession网络请求框架

主要功能介绍: 1.GET请求操作 2.POST请求操作 1.处理params参数(例如拼接成:usename="123"&password="123") #import <Foundation/Foundation.h> @interface LYURLRequestSerialization : NSObject +(NSString *)LYQueryStringFromParameters:(NSDictionary *)paramete

NSURLConnection / NSURLSession/ SDWebImage

1. NSURLConnection (iOS9开始被弃用)=========================================== 此类的对象加载一个URL请求对象,通过异步/同步的方式发送请求,并获得响应. 此类位于Foundation框架下,继承自NSObject ------------------------------ 异步/同步?    通讯方式 异步:在请求发送后,无需等待响应结果,而是可以继续后续其他操作,该请求的响应在回调方法中处理(通常用到的代理方法或bloc

NSURLSession

-(void)get{    NSURLSession * session=[NSURLSession sharedSession];    NSURLSessionTask * task=[session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/2016042

iOS学习-10下载(2)NSURLSession 篇

使用NSURLSessionDownloadTask下载文件的过程与前面差不多,需要注意的是文件下载文件之后会自动保存到一个临时目录,需要开发人员自己将此文件重新放到其他指定的目录中. // // ViewController.m // NSURLSession // // Copyright © 2016年 asamu. All rights reserved. // #import "ViewController.h" @interface ViewController () @e

NSURLSession学习

NSURLSession是iOS7中新的网络接口,它与NSURLConnection是并列的.但是在iOS9中,苹果已经废除了NSURLConnection的使用,使用NSURLSession代替.AFNetworking最先版已经将NSURLConnection替换为NSURLSession. 参见:https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS

iOS开发之网络编程--1、NSURLSession的基本使用

前言:学习NSURLSession的使用之前,先学习一篇关于NSURLSession的好文章<From NSURLConnection to NSURLSession>或者是国内的译文<从 NSURLConnection 到 NSURLSession>,或者不用学习本人的博客园笔记直接学习<从 NSURLConnection 到 NSURLSession>也是可以的,这篇对NSURLSession的使用有着挺详细的论述.但是本文先粗略介绍一下NSURLSession的基

网络编程(一) 利用NSURLSession发送GET POST请求

Xcode 7.0后,http链接不能直接访问(https可以),需要在Info.plist增加下面一项才能正确访问. 使用NSURLSession进行网络请求的流程: 1.构造NSURL 2.构造NSURLRequest请求对象 3.构造NSURLSession会话对象 4.创建网络请求任务:dataTask, downloadTask, uploadTask 5.发送网络请求 1.GET 请求(GET一般用于获取/查询资源信息) - (void)HTTPGET { //1.构造NSURL N

利用NSURLSession下载视频,图片,能实现断点续传

首先分析下载资源到本地,就得有URL ,点击btn ,就会解析网络地址,获取数据,就得有进度条控件 NSURLSession类的实现,通过委托代理模式去实现一些方法,需遵守<NSURLSessionDownloadDelegate>,委托代理设计模式在iOS开发中得到大量使用 /* 利用NSURLConnection实现断点续传 1.NSURLSession,iOS7中推出的一个类,有取代NSURLConnection 2.实现文件的下载与上传,而NSURLSessionData有两个子类:N

NSURLSession下载文件-代理

- 3.1 涉及知识点 (1)创建NSURLSession对象,设置代理(默认配置) ```objc //1.创建NSURLSession,并设置代理 /* 第一个参数:session对象的全局配置设置,一般使用默认配置就可以 第二个参数:谁成为session对象的代理 第三个参数:代理方法在哪个队列中执行(在哪个线程中调用),如果是主队列那么在主线程中执行,如果是非主队列,那么在子线程中执行 */ NSURLSession *session = [NSURLSession sessionWit