IOS7引入API之NSURLSession入门介绍

简介: ios7引入了nsurlsession,通过它可以支持后台相关的网络操作的新特性: 1.后台上传下载; 2.不需要通过nsoperation,直接用nsurlsession的api就可以做到网络操作的暂停和恢复。

ios7引入了nsurlsession,通过它可以支持后台相关的网络操作的新特性:

1.后台上传下载;
2.不需要通过nsoperation,直接用nsurlsession的api就可以做到网络操作的暂停和恢复。
3.作为可配置的容器:例如你可以设置http头的一些属性并且保存在session里,不用重复去做配置
4.可以子类化并支持私有配置的session
5.对鉴权的回调做了改进,此前nsurlconnection的鉴权回调无法和请求进行匹配,该回调可能来自任意的请求;而现在每个请求都可以在指定的代理方法中对其进行处理.

nsurlsession层次结构示意图:



可以看到,它包含了配置、代理还有用来处理各种任务的task,在task里面实现了各种不同的http请求。task的结构图如下:



我们可以看到其中子类化了上传下载的任务,并且支持挂起/恢复/取消的操作;返回的nsdata需要自己去处理,这点比起afnetworking的便捷程度可以说有所不如,毕竟afnetworking是在更高的层次进行了封装。

进行一次标准的网络操作我们分为如下几步:

step1:配置session,比如配置请求的header;配置是否保存缓存、cookie、证书等

代码示例如下:


        NSURLSessionConfiguration *config = [NSURLSessionConfiguration ephemeralSessionConfiguration];

 

        // 2

        [config setHTTPAdditionalHeaders:@{@"Authorization":[Dropbox apiAuthorizationHeader]}];

 

        // 3

        _session = [NSURLSession sessionWithConfiguration:config];


step2:

使用生成的session调用任务方法,保存方法返回的task;对该task执行resume操作(默认生成的task是处于挂起状态)。

此处的任务方法有两种类型,一种是taskwithurl,一种是taskwithrequest,简单来说只针对url请求就可以调用withurl方法,如果需要在请求中带上更多内容进行一些配置的话需要采用taskwithrequest相关的方法。

代码示例如下:

NSURL*url = [Dropbox appRootURL];

 

// 2

NSURLSessionDataTask *dataTask =

[self.session dataTaskWithURL:url

            completionHandler:^(NSData*data,

                                NSURLResponse *response,

                                NSError *error){

    if (!error){            

        // TODO 1: More coming here!

    }                

}];

 

// 3  

[dataTask resume];


step3:

在上一步请求中的block实现结果解析(nsdata需要根据接口具体情况(一般是服务器侧决定的)解析成可以理解的数据,如json/xml/plist等);也可以不在block中进行相关操作,而是实现相关的代理方法(需要在step1中先设置session的代理),对相关的结果/进度等进行处理。

urlsession相关的代理方法有很多,这里不一一列举,主要有以下几组协议:

@protocol NSURLSessionDelegate <NSObject>  // session的代理,相当于所有协议的父类  


@protocol NSURLSessionTaskDelegate <NSURLSessionDelegate>  // task的代理,其父协议是NSURLSessionDelegate


@protocol NSURLSessionDataDelegate <NSURLSessionTaskDelegate> // datatask的代理,其父协议是NSURLSessionTaskDelegate


@protocol NSURLSessionDownloadDelegate <NSURLSessionTaskDelegate>  // downloadtask的代理,其父协议是NSURLSessionDataDelegate


结合其对应类的层次关系,相关的几组协议的关系也就不难理解了。




目录
相关文章
|
4月前
|
JSON 安全 API
电商API入门问答:开发者必知的10个基础问题
本文详解电商API的10个基础知识,涵盖定义、用途、认证、安全等内容,帮助开发者快速入门并提升开发效率。
146 0
|
4月前
|
缓存 监控 安全
电商API集成入门:从零开始搭建高效接口
在数字化电商时代,API集成成为企业提升效率、实现系统互联的关键。本文从零开始,逐步讲解如何搭建高效、可靠的电商API接口,适合初学者学习。内容涵盖API基础、认证安全、请求处理、性能优化等核心步骤,并提供Python代码示例与数学公式辅助理解。通过实践,读者可掌握构建优质电商API的技巧,提升用户体验与系统性能。
234 0
|
1月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
7月前
|
JSON 算法 API
一文掌握 1688 商品详情 API 接口:从入门到实战
1688是国内领先的综合电商批发平台,提供海量商品资源。其商品详情API助力开发者与企业获取商品的详细信息(如属性、价格、库存等),广泛应用于电商数据分析、比价系统及采购场景。API支持GET/POST请求,需传入通用参数(app_key、timestamp等)与业务参数(如product_id)。返回JSON格式数据,包含商品标题、价格、图片链接等详情,提升业务效率与决策精准度。
|
7月前
|
搜索推荐 API 开发者
京东商品列表 API 接口全解析:从入门到精通
京东商品列表API是京东开放平台为开发者提供的核心数据接口,支持批量获取商品基础信息、价格、库存状态等多维度数据。它具备数据丰富性、灵活筛选与分页查询、稳定高效等特点,可满足市场分析、选品优化、比价工具及推荐系统开发等需求,为电商业务创新提供坚实支撑。通过标准化通道,助力第三方高效、合法地利用京东海量商品数据。
|
6月前
|
JSON API 开发工具
电商API接口入门指南
本文介绍了API的基础知识及其在电商领域的实际应用。首先,阐释了API的概念、运作机制及参数与返回值的作用,帮助读者理解如何通过API实现软件间的交互。接着,以获取电商商品列表为例,详细讲解了从选择平台、引入SDK到编写代码调用API的全流程。示例代码采用Python语言,利用requests库发送请求并解析JSON数据,为开发者提供了清晰的实践指导。
|
4月前
|
存储 安全 API
亚马逊SP-API入门:海外电商接口调用与国内平台的差异化
亚马逊 SP-API 与国内电商 API 在技术架构、安全机制及开发流程上差异显著。本文对比京东、淘宝等平台,分析接口设计、地域适配、权限管理等核心差异,并结合实战经验提供开发建议,助力开发者高效接入 SP-API,实现全球电商业务拓展。
|
6月前
|
数据挖掘 API 开发者
京东商品详情 API 接口全攻略:从入门到精通
京东商品详情API接口是京东开放平台为开发者提供的服务,用于获取商品详细信息。通过调用接口,开发者可获得商品属性、价格、库存、促销信息等数据,适用于电商应用、价格比较工具及数据分析平台等场景。支持GET/POST请求方式,参数包括API版本、密钥等。示例代码展示了如何使用Python的requests库调用该接口,并获取JSON格式的返回数据,包含商品基本信息、价格、库存和用户评价等内容。
294 16
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
519 7
|
前端开发 JavaScript 安全
入门Vue+.NET 8 Web Api记录(一)
入门Vue+.NET 8 Web Api记录(一)
652 5