IOS7之后请求变化
- NSURLSession:
- 在WWDC 2013中,Apple的团队对NSURLConnection进行了重构,并推出了NSURLSession作为替代.
- 支持后台运行的网络任务
- 暂停,停止,重启网路任务,不在需要NSPpation封装
- 请求可以使用同样的配置容器
- 不同的session可以使用不同的私有存储,block和代理可以同时起作用
- 直接从文件系统上传,下载
- 为了方便程序员使用,苹果提供了一个全局 session
- 所有的任务(Task)都是由Session发起的
- 所有的任务默认都是挂起的,需要Resume
- 工作模式:
- 默认会话模式 (default)
- 瞬时会话模式 (ephemeral)
- 后台会话模式 (background)
- 支持的任务类型
- 加载数据
- 下载
- 上传
#import
"ViewController.h"
@interface ViewController ()<</span>NSURLSessionDataDelegate
//
@property (nonatomic,strong) NSMutableData *resultData;
@end
@implementation ViewController
- (void)viewDidLoad {
}
#pragma mark ----block -------------
- (
IBAction
)get:(
id
)sender {
}
- (
IBAction
)post:(
id
)sender {
}
#pragma mark -----代理-------------
首先:遵循
<</span>NSURLSessionDataDelegate >协议,并且创建属性Data用来接收下载下来的数据
//get
- (
IBAction
)get:(
id
)sender {
}
//post
- (
IBAction
)post:(
id
)sender {
}
#pragma mark -----NSURLSessionDataDelegate 协议方法
//服务器开始响应,准备返回数据
- (
void
)URLSession:(
NSURLSession
*)session dataTask:(
NSURLSessionDataTask
*)dataTask
didReceiveResponse:(
NSURLResponse
*)response
}
/
/客户端接收到数据
- (
void
)URLSession:(
NSURLSession
*)session dataTask:(
NSURLSessionDataTask
*)dataTask
didReceiveData:( NSData *)data{
[
self
.
resultData
appendData
:data];
didReceiveData:( NSData *)data{
}
//数据接收完成,
结束响应
- (
void
)URLSession:(
NSURLSession
*)session task:(
NSURLSessionTask
*)task didCompleteWithError:(
NSError
*)error {
if
(error ==
nil
) {
NSDictionary
*dict = [
NSJSONSerialization
JSONObjectWithData
:
self
.
resultData
options
:(
NSJSONReadingAllowFragme nts
)
error
:
nil
];
NSLog
(
@"Dictionary = %@"
, dict);
}
}
}
@end
总结
Session n. 会议;(法庭的)开庭;
task n. 工作,作业;任务
completion n. 完成,结束;实现
Handler n. 处理者;管理者
Configuration n. 配置;结构;外形
default n. 违约;缺席;缺乏;系统默认值
resume vt. 重新开始,继续;恢复,重新占用