[iOS]NSURL,NSURLRequest, NSURLSession 和 NSURLSessionTask
2015-09-29 10:06
627 查看
NSURL对象负责以URL的格式保存web应用的位置。对大多数Web服务,URL将包含基地址,Web应用名和需要传达的参数。
NSURLRequest对象负责保存需要传送给Web服务器的全部数据,这些数据包括:一个NSURL对象、缓存方案(caching policy),等待Web服务器响应的最长时间和需要通过HTTP协议传送的额外信息(NSMutableURLRequest是NSURLRequest的可变子类).
每一个NSURLSessionTask对象都表示一个NSURLRequest的生命周期。NSURLSessionTask可以跟踪NSURLRequest的状态,还可以对NSURLRequest执行取消,暂停和继续操作。NSURLSessionTask有多种不同功能的子类,包括NSURLSessionDataTask,NSURLSessionUploadTask和NSURLSessionDOwnloadTask.
NSURLSession对象可以看作是一个生产NSURLSessionTask对象的工厂。可以设置其生产出的NSURLSessionTask对象的通用属性,例如请求头的内容,是否允许在蜂窝网络下发送请求等。NSURLSession对象有一个功能强大的委托, 可以跟踪NSURLSessionTask对象的状态,处理服务器的认证要求等。
使用实例:
NSURLRequest对象负责保存需要传送给Web服务器的全部数据,这些数据包括:一个NSURL对象、缓存方案(caching policy),等待Web服务器响应的最长时间和需要通过HTTP协议传送的额外信息(NSMutableURLRequest是NSURLRequest的可变子类).
每一个NSURLSessionTask对象都表示一个NSURLRequest的生命周期。NSURLSessionTask可以跟踪NSURLRequest的状态,还可以对NSURLRequest执行取消,暂停和继续操作。NSURLSessionTask有多种不同功能的子类,包括NSURLSessionDataTask,NSURLSessionUploadTask和NSURLSessionDOwnloadTask.
NSURLSession对象可以看作是一个生产NSURLSessionTask对象的工厂。可以设置其生产出的NSURLSessionTask对象的通用属性,例如请求头的内容,是否允许在蜂窝网络下发送请求等。NSURLSession对象有一个功能强大的委托, 可以跟踪NSURLSessionTask对象的状态,处理服务器的认证要求等。
使用实例:
NSString *requestString = @""; // 创建URL对象 NSURL *url = [NSURL URLWithString:requestString]; // 根据URL对象创建NSURLRequest对象 NSURLRequest *req = [NSURLRequest requestWithURL:url]; // 为NSURLSession对象提供一个NSURLRequest对象和一个Block对象就可以创建一个NSURLSessionTask对象 // 刚创建的NSURLRequest对象处于暂停状态 NSURLSessionTask *dataTask = [self.session dataTaskWithRequest:req completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSString *json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@", json); }]; // 让NSURLSessionTask向服务器发送请求 [dataTask resume];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:nil delegateQueue:nil]; [self fetchNeed];
相关文章推荐
- Priority Queue 优先级队列
- design pattern Builder 生成器设计模式
- Not a million dollars ——a certain kind of ingenuity, discipline, and proactivity that most people seem to lack
- 桌面/移动端 Ubuntu 将获重大 UI 升级
- UIViewContentMode各种模式的样式
- UITableView下拉刷新
- UI:归档、反归档、数据持久化
- gui画线和绘制鼠标
- UIDatePicker的用法
- 源码推荐(9.29):几十种效果的图片滤镜,快速集成可拉伸头部图片的UITableView
- 【Espruino】NO.03 从点灯开始
- UI10_tableView的HeaderView
- UI10_快捷菜单
- UI10_3个tableView的省市区联动
- UI10_UITableViewCell自适应高度
- UI_导航视图控制器
- drupal markdown editor for BUEditor
- UGUI学习笔记1——Canvas
- NGUI之按钮置灰
- HDU 3177 Crixalis's Equipment 贪心