NSURLSession的简单使用

NSURLSession的简单使用(不同于NSURLConnection,仅仅支持异步请求)

dataTask,简单请求直接block里面执行,不走代理

NSURLSessionDataTaskDelegate:

签订代理:

-NSURLConfiguration *configuration = [NSURLConfiguration defaultConfiguration]

-NSURLSession *session = [NSURLSession sessionWithConfiguration:delegate:queue:nil]

实现相应的代理方法:

-didRecieveResponse

completionHander(…)

三种类型:

NSURLSessionResponseCancer = 0;默认,取消任务

NSURLSessionResponseAllow = 1;任务继续执行

NSURLSessionResponseBecomeDownload = 2;dataTask变为downloadTask

根据response,拿到数据长度

1.将response转为NSHTTPURLResponse

2.获取响应头 NSDictionary *header = [httpResponse allHeaders];

3.获取长度 CGFloat length = [header[@“Content-Length”] longlongValue];

-didReceiveData

收到data,举个例子,图片的渐进式加载

1.[gData appendData];

2.根据现有data更新imageSouceRef

CGImageSourceUpdate(container,data,final:YES|NO);

3.创建CGImageRef

CGImageSourceCreateAtIndex(container,0,option:null);

4.创建image

UIImage *curImage = [UIImage imageWithCGImage:imageRef];

5.释放imageRef

CGImageRelease(imageRef);

-didCompleteWithError

任务完成后的相关处理

NSURLDownloadDelegate

代理方法:

-didWriteData

totalBytesWritten:当前写入的data

totalBytesExpectedToWritten:总计要写入的data

-didResumeAtOffset

fileOffset:已经写入的流

expectedTotalBytes:全部数据

task的三种状态:

resume,suspend,cancer

-didFinishDownloadingToUrl

location:临时的存储路径,使用fileManager移位

1.创建路径 NSString *path  = [NSSearchDirectoryInDomain(NSCacheDirectory,NSUserDomainMask,YES) lastObject] stringByAppendingPathComponent:@“filename.type”];

2.移位 [NSFileManager default] moveItemAtPath:location.path toPath:path error:]

根据location拿到data

NSData *data = [NSData dataWithContentsOfUrl:location];

-didCompleteWithError

时间: 2024-11-05 23:21:14

NSURLSession的简单使用的相关文章

iOS开发-NSURLConnection和NSURLSession的简单实用

一,NSURLConnection的简单实用 (一).简单请求过程 /// 1.创建url(资源路径) NSURL *url = [NSURL URLWithString:@"http://f.hiphotos.baidu.com/image/pic/item/d6ca7bcb0a46f21ff3649fbaf5246b600d33ae83.jpg"]; /// 2.创建请求 NSURLRequest *request = [NSURLRequest requestWithURL:ur

Swift网络开发之NSURLSession学习笔记

先上效果图:        功能: -单个任务下载 -暂停下载任务 -取消下载任务 -断点下载 -显示下载进度及速度 -多任务下载 -分别控制各个任务 在如今移动互联网的浪潮中,手机APP越来越依赖网络通讯来交互数据.今天我们就来分享下如何通过使用NSURLSession这个Apple官方提供的网络接口实现文件下载的思路. NSURLSsession 先来介绍下NSURLSession这个接口.NSURLSession是苹果在WWDC2013上推出的用于替代它的前辈NSURLConnection

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文件进行配置. 如何配置,请参考:

NSJSONSerialization的简单用法

NSJSONSerialization 苹果官方给出的解析方式是性能最优越的,虽然用起来稍显复杂. 首先我们在上面已经有了我希望得到的信息的网站的API给我们的URL,在OC中,我要加载一个NSURL对象,来向网站提交一个Request.到这里需要特别注意了,iOS9的时代已经来临,我们先前在旧版本中使用的某些类或者方法都已经被苹果官方弃用了.刚刚我们向网站提交了一个Request,在以往,我们是通过NSURLConnection中的sendSynchronousRequest方法来接受网站返回

ios开发中-AFNetworking 的简单介绍

Blog: Draveness 关注仓库,及时获得更新: iOS-Source-Code-Analyze 在这一系列的文章中,我会对 AFNetworking 的源代码进行分析,深入了解一下它是如何构建的,如何在日常中完成发送 HTTP 请求.构建网络层这一任务. AFNetworking 是如今 iOS 开发中不可缺少的组件之一.它的 github 配置上是如下介绍的: Perhaps the most important feature of all, however, is the ama

AFNetWorking的实现分析以及简单使用

一:声明本 人以前一直是使用ASI网络请求类库的.最近才开始了解使用AFNetworing这个类库.网上也肯定会有更好的介绍AFN的博客文章,希望大家辩证阅 读,取之精华,去其糟粕.本人的认识可能有错误或者不全的地方,还请大家不吝指正.有问题可以直接在博客留言,不接受QQ询问.博客源地址:http://386502324.blog.163.com/blog/static/1134693772015522115237696/ 二:综述以下就是cocospod中AFNetworing除了几个分类外的

AFNetworking访问https出现"NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813"

使用AFNetworking来访问http请求非常方便快捷,最简单的请求代码如下: #import "HSTestHTTPSViewController.h" #import <AFNetworking/AFNetworking.h> @interface HSTestHTTPSViewController () @end @implementation HSTestHTTPSViewController - (void)viewDidLoad { [super viewD

iOS边练边学--NSURLSession、NSURLSessionTask的介绍与使用以及url中包含了中文的处理方法

一.NSURLSession.NSURLSessionTask的使用步骤 首先创建NSURLSession对象 通过NSURLSession对象创建对应的任务 <1>NSURLSessionDataTask的GET和POST  -- 以及url中包含了中文的解决办法 <2>NSURLSessionDownloadTask实现小文件的下载 <3>NSURLSessionDownloadTask实现大文件的断点下载 -- 暂时没有实现退出程序后的文件续传 1 #import

AFN的简单封装抽取工具类

?AFN获取数据----by hanfeng AFN是对 NSURLConnection,NSURLSession的封装 AFNetworking3.0删除了了对 NSURLConnection的封装内容 这是因为,NSURLSession能够完全替代NSURLConnection,并且具有很多优点 支持后台运行的网络任务 暂停.停止.重启网络任务,不需要自己封装NSOperation 支持断点续传,异步下载 支持上传,异步上传 获取下载.上传的进度 NSURLSession有3种任务 NSUR