NSURLSession

原创 2016年05月31日 17:41:06

基础知识
//NSURLSession做网络请求
//相关的类
//1.NSURL: 请求地址
//2.NSURLRequest:请求对象(和NSURLConnection使用的请求对象一样的)
//3.NSURLSession:发送请求,并且获取从服务器返回的数据
//4.NSURLSessionConfiguration:会话模式
//a.defaultSessionConfiguration 默认会话模式(相当于NSURLConnection),会缓存请求相关的数据
//b.ephemeralSessionConfiguration 瞬时会话模式(不会做缓存)
//c.backgroundSessionConfigurationWithIdentifier 后台模式
//5.NSURLSessionTask:
//a.b.NSURLSessionDataTask数据任务(一般的数据请求,比如:获取json数据)
//b.NSURLSessionDownLloadTask 下载任务 (下载文件,比如:下载图片\下载音频视频\下载zip\下载安装包…)
//c.NSURLSessionUploadTask 上传任务(比如:上传图片\上传音频视频\上传zip\上传安装包…)
#pragma mark - 通过协议方法获取服务器返回的数据
-(void)test2{
//1.创建请求路径
NSURL* url = [NSURL URLWithString:@”http://www.1000phone.net:8088/app/iAppFree/api/limited.php?page=1&number=4“];
//2.创建请求
NSURLRequest* request = [NSURLRequest requestWithURL:url];
//3.创建会话模式
NSURLSessionConfiguration* congire = [NSURLSessionConfiguration defaultSessionConfiguration];
//4.创建seession
//参数1:会话模式
//参数2:代理
//参数3:协议方法添加的队列
NSURLSession* session = [NSURLSession sessionWithConfiguration:congire delegate:self delegateQueue:[NSOperationQueue mainQueue]];
//5.创建任务
NSURLSessionTask* task = [session dataTaskWithRequest:request];
//6.启动任务
[task resume];
}
mark - DataDelegate
//接收到服务器的响应后会调用的方法
//参数1:委托
//参数2:session中任务
//参数3:响应信息
//参数4:通过这个bolck告诉服务器客户端需不需要接收数据
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler{
NSLog(@”%@”,response);
if (_data == nil ) {
_data = [[NSMutableData alloc] init];
}else{
_data.length = 0;
}

//如果不调用这个bolck或者传入NSURLSessionResponseCance就会取消数据的传输
//如果传入NSURLSessionResponseAllow,允许数据的传输
completionHandler(NSURLSessionResponseAllow);

}
//接收到服务器返回的数据的时候,会调用这个方法
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveData:(NSData *)data{
[_data appendData:data];
NSLog(@”接收到数据”);
}
- (void)URLSession:(NSURLSession )session task:(NSURLSessionTask )task
didCompleteWithError:(nullable NSError *)error{
NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:_data options:NSJSONReadingMutableContainers error:nil];
NSLog(@”%@”,dic);
//如若error不为空,说明请求失败:否则数据接收完成
if (error) {
NSLog(@”%@请求失败:”,error);
}else{
NSLog(@”数据接收完成”);
}
}
#pragma mark - 通过block方法获取服务器返回的数据
-(void)test1{
//1.创建请求路径
NSURL* url = [NSURL URLWithString:@”http://www.1000phone.net:8088/app/iAppFree/api/limited.php?page=1&number=4“];
//2.根据url创建请求对象
NSURLRequest* request = [NSURLRequest requestWithURL:url];
//3.创建会话模式
//默认会话模式
NSURLSessionConfiguration* config = [NSURLSessionConfiguration defaultSessionConfiguration];
//4.创建session
NSURLSession* session = [NSURLSession sessionWithConfiguration:config];
//5.创建数据任务
//参数1:需要发送的请求
//参数2:请求结束后会调用的bolck
NSURLSessionTask* task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//参数1:服务器返回的数据(实体内容)
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@”%@”,dict);
//参数2:相应信息(状态行和相应头)
NSLog(@”%@”,response);

}];;
//6.启动任务
[task resume];

}

NSURLSession

  • 2015年02月13日 18:09
  • 65KB
  • 下载

用NSUrlSession批量下载文件并保存文件的处理

现在我来介绍之前说过的用NSUrlSession批量下载的方法,用NSUrlSession下载文件,有两种方法,一是直接调用Block方法做下载后的处理,二是利用NSUrlSessionDelegat...

使用NSURLSession程序退出后继续下载

iOS NSURLSession断点下载

NSURLSession的使用demo

  • 2016年06月27日 19:53
  • 149KB
  • 下载

开发只懂 AFN ?搞定 NSURLSession 才是硬道理

由于傲娇的苹果在 iOS9 之后已经放弃了 NSURLConnection,所以在现在的实际开发中,除了大家常见的 AFN 框架,一般使用的是 iOS7 之后推出的 NSURLSession,作为...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSURLSession
举报原因:
原因补充:

(最多只允许输入30个字)