URLSession

URLSession

NSURLSession是iOS7中新的网络接口,与NSURLConnection是并列的。

当程序在前台时,NSURLSession与NSURLConnection大部分可以互相替代

NSURLSession支持后台网络操作,除非用户强行关闭

NSURLSession提供的功能:

p通过URL将数据下载到内存
p通过URL将数据下载到文件系统
p将数据上传到指定URL
p在后台完成上述功能
p
p对于小型数据,例如用户登录、下载小图像、JSON & XML仍然使用NSURLConnection的异步或同步方法即可

NSURLSession的使用

使用NSURLSessionConfiguration来配置NSURLSession对象

用NSURLSession对象来启动一个NSURLSessionTask对象

也可以使用系统全局的sharedSession单例来满足大多数的需求

注:相比较NSURLConnection的返回处理,NSURLSession提供了灵活的数据返回方式,可以使用简单的block方式来处理返回数据,也可以使用更强大的delegate

NSURLSessionConfiguration

作用:用于定义和配置NSURLSession对象

每一个NSURLSession对象都可以设置不同的NSURLSessionConfiguration,从而满足应用内不同类型的网络请求

NSURLSessionConfiguration的三种类型:

(1)defaultSessionConfiguration默认session配置,类似NSURLConnection的标准配置,使用硬盘来存储缓存数据
(2)ephemeralSessionConfiguration临时session配置,与默认配置相比,这个配置不会将缓存、cookie等存在本地,只会存在内存里,所以当程序退出时,所有的数据都会消失
(3)backgroundSessionConfiguration后台session配置,与默认配置类似,不同的是会在后台开启另一个线程来处理网络数据

NSURLSessionTask

NSURLSession使用NSURLSessionTask来具体执行网络请求的任务

NSURLSessionTask支持网络请求的取消、暂停和恢复,比如下载文件暂停之后再恢复就能够自动从上次的进度继续下载

NSURLSessionTask还能获取数据的读取进度

NSURLSessionTask的三种类型:

(1)NSURLSessionDataTask 处理一般的NSData数据对象,比如通过GET或POST方式从服务器获取JSON或XML返回等等,但不支持后台获取
(2)NSURLSessionUploadTask 用于上传文件,支持后台上传
(3)NSURLSessionDownloadTask 用于下载文件,支持后台下载

通过HTTP PUT方法实现文件上传的步骤

实例化NSMutableURLRequest并指定HTTPMethod为PUT

设置请求的授权

(1)授权字符串格式:用户名:口令
(2)授权模式:Basic base64编码的授权字符串
(3)为HTTPHeaderField的Authorization赋值

文件上传的请求部分

// 1. URLRequest

NSURL *url = [NSURL URLWithString:@"http://localhost/uploads/xxx.png"];

NSMutableURLRequest *requestM = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:2.0f];

requestM.HTTPMethod = @"PUT";

// 设置用户授权

// 1> 授权字符串(用户名+密码)

NSString *authStr = @"admin:123456";

// 2> BASE 64编码

NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];

NSString *base64Str = [authData base64EncodedStringWithOptions:0];

NSString *auth = [NSString stringWithFormat:@"BASIC %@", base64Str];

[requestM setValue:auth forHTTPHeaderField:@"Authorization"];

Q & A

NSURLSession网络接口的更多相关文章

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

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

  2. NSURLSession使用说明及后台工作流程分析

    原文摘自http://www.cocoachina.com/industry/20131106/7304.html NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConne ...

  3. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

  4. IOS - NSURLSession

    NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...

  5. NSURLSession与AFNetworking3.0

    下面是用GET方式请求一个页面数据的示例: AFNetworking 2.x NSString *siteUrl = @"http://webinar.ofweek.com/readDemo ...

  6. ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析

    NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...

  7. NSURLSession概述

    NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...

  8. iOS基础 - NSURLSession

    使用URLSession所有的网络访问都是有缓存的,缓存文件自动保存在tmp文件夹中,URLSession本身实现的时候,就是少量多次的! l 使用defaultSessionConfiguratio ...

  9. iOS开发 GET、POST请求方法:NSURLSession篇

    NSURLConnection,在iOS 9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: iOS开发 GET.POST请求方法(NSURLConnectio ...

随机推荐

  1. php设置http请求头信息和响应头信息

    php设置http请求头信息和响应头信息 设置请求服务器的头信息可以用fsockopen,curl组件,header函数只能用来设置客户端响应的头信息,不能设置服务器的头信息. 例子;  一.head ...

  2. 微信支付v2开发(11) Native支付

    关键字:微信公众平台 微信支付 Native原生支付 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/wxpay-native.html 在这篇微信公众平台开 ...

  3. Javascript和jquery事件--键盘事件KeyboardEvent

    Js和jq事件—键盘事件KeyboardEvent 键盘事件keydown,keypress和keyup,还需要涉及到一个文本事件textInput. keydown,keypress和keyup事件 ...

  4. Docker---(8)Docker启动Redis后访问不了

    原文:Docker---(8)Docker启动Redis后访问不了 版权声明:欢迎转载,请标明出处,如有问题,欢迎指正!谢谢!微信:w1186355422 https://blog.csdn.net/ ...

  5. Windows Forms 对话框篇

    1,标准对话框 Windows内置的对话框,又叫公用对话框,它们作为组件提供的,并且存在于System.Windows.Forms命名空间中. 手工方式: private void button1_C ...

  6. Java 服务端入门和进阶指南

    作者:谢龙 链接:https://www.zhihu.com/question/29581524/answer/44872235 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 现在互联网上资 ...

  7. SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能

    SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro ...

  8. GCC 编译 --sysroot

    -sysroot 的作用 如果在编译时指定了-sysroot就是为编译时指定了逻辑目录.编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录. 如 ...

  9. Mosquito的优化——订阅树优化(八)

    本文由逍遥子撰写.转发请标注原址: http://blog.csdn.net/houjixin/article/details/46413783 或 http://houjixin.blog.163. ...

  10. C语言深度剖析-----函数与指针的分析

                          指针的本质 指针需要保证指向任意数据类型,所以指针变量都占用32位bit即4字节. PS:不同机器上,指针占用内存不一                   ...