IOS开发中 session&HTTPS&AFN

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;


你可能感兴趣的:(ios,https,AFN, session)