1.NSURLSession: ios7.0之后 代替URL connection
用于替代NSURLConnection 支持后台运行网络 暂停、停止、重启网络任务、 不再需要自己封装NSOperation
2.NSURLSession
可以发起以下任务 默认所有的任务都是挂起的 DataTask UploadTask DownloadTask
3.NSURLSessionConfiguration 配置请求信息
4.DataTask.
getDemo://创建session sharedSession
//生成dataTask/*url ;完成时候的回调*/
//开启任务[dataTask resume];
postDemo://创建session//请求//get->post//请求体//开启任务resume
5.downloadTask下载文件:异步执行
//创建session
//下载任务/*location 文件下载到本地的路径;response响应头;错误*/
//拷贝文件cache
//文件保存路径/*文件路径;拷贝到哪里;错误*/
//开启任务
问题:文件确实下载 但是文件会自动删除(保证用户闪存有一个好的利用率)
在block返回之前要拷贝 打开文件 如果block执行完成之后 文件就不删除了
6.session下载进度使用代理方式
//session设置代理/*Configuration session的配置信息;代理;代理队列 指定代理方法将在哪个队列上执行 指定线程 */
下载的过程中 一定是在子线程 但是可以指定代理方法 在哪个队列上执行
//默认的session配置信息
//downloadTask
//resume
//当下载task指定了block回调 就不会执行代理方法
/*didWriteData 本次得到的数据长度;totalBytesWritten 已经下载了多少数据的长度;totalBytesExpectedToWrite 文件的总长度*/进度
//及时把文件拷贝到指定地方 否则文件会被删除
7.断点续传
暂停cancelByProducingResumeData :resumeData返回已经下载数据的信息 不是文件本身 是已经下载的文件信息 包括url文件长度 etag
继续downloadTaskWithResumeData:重新创建downloadTask并且把resumeData已经下载的文件信息告诉他
问题(1):开始-暂停-暂停-继续-崩溃
原因:点击多次暂停 resumeData为空 downloadTask创建报错
(2)继续-崩溃
原因:resumeData为空 downloadTask创建报错
(3)开始-暂停-继续多次 进度混乱
原因:开启了多个下载任务
8.压缩和解压缩
第三方框架 底层是c语言
压缩文件/*指定zip包生成的
路径;要打包的文件夹路径*/
9.webDav配置 把图片上传到webdav服务器上
//创建一个session
//上传到webdav服务器 表明要向uploads文件夹下创建一个03.jpg
//request get->put
//生成验证信息的字符串
//base64编码 NSData *data
10.删除webdav上面的图片资源
/*请求 get->delete;请求头加验证信息;dataTask*/
11.HTTPS:
(1)信任服务器返回的证书(公钥)
(2) 客户端产生随机密钥
(3)公钥对 随机密钥进行对称加密(rsa)
(4) 把用公钥加密后的随机密钥发送给服务器
(5)使用随机密钥加密数据和服务器交互
12.https代理:/*challenge从服务器获得公钥的信息;completionHandler 把验证结果告诉服务器*/
//判断验证方式
//直接选择相信服务器 需要生成对称加密的密钥 交给服务器
//把密钥交给服务器 填0表示显现服务器
13.AFN
//找到对应的管理类当前manager是connection去实现
AFN默认会把数据进行json反序列化
//追加文件的内容到响应体
14.AFN-session Demo
//manager 用session来实现 使用方式不变/*请求;进度NSProgress** (&progress);指定下载文件的地址(NSString->URL 本地路径不能使用URLWithString);完成下载的回调*/
15.下载进度
kvo观察者模式/*要观察他的对象;观察哪个key;选项 选择观察新的值或者旧的值;其他参数
//当被观察的对象发生改变 就会调用此方法/*观察哪个key;观察的对象;变化;其他参数*/
16.访问百度
//manager 用session来实现 使用方式不变
//指定序列化器
//默认AFN是对json反序列化 html不能直接序列化
//xml解析
NSXMLParser*parser = responseObject;
parser.delegate = self;