iOS 多线程编程<十七、NSURLSession的基本用法>
2016-11-07 17:03
369 查看
苹果推出NSURLSession是为了代替NSURLConnection
看一下NSURLSession的基本用法:代码如下
<span style="font-size:10px;">// // ViewController.m // NSURLSession // // Created by fe on 2016/11/7. // Copyright © 2016年 fe. All rights reserved. // #import "ViewController.h" @interface ViewController ()<NSURLSessionDataDelegate> @end @implementation ViewController - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self sessionDelegate]; } - (void)get1 { //1:创建URLSession NSURLSession *session = [NSURLSession sharedSession]; //2:根据会话对象来创建task /* 第一个参数:请求对象 第二个参数:data:响应体 response:响应头 error:错误信息 */ NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSLog(@"%@---%@",error,[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]); }]; [dataTask resume]; } - (void)get2 { //1:创建URLSession NSURLSession *session = [NSURLSession sharedSession]; //2:根据会话对象来创建task /* 第一个参数:请求对象 第二个参数:data:响应体 response:响应头 error:错误信息 */ NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"]; NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { }]; [dataTask resume]; } - (void)sessionDelegate { //1:创建session,并设置代理 /* 第一个参数:配置信息 第三个参数:控制代理方法在哪个线程调用 */ NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]]; //2:创建task NSURLSessionTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]; //3:启动 [dataTask resume]; } #pragma mark - NSURLSessionDataDelegate - - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler; { /* NSURLSessionResponseCancel = 0 取消(默认) NSURLSessionResponseAllow = 1 允许接受数据 NSURLSessionResponseBecomeDownload = 2 NSURLSessionResponseBecomeStream */ //请求策略,如果不设置请求策略,默认为NSURLSessionResponseCancel,则接收不到数据 completionHandler(NSURLSessionResponseAllow); } - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data; { } - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { } @end</span>
相关文章推荐
- iOS 多线程编程<二、GCD基本用法>
- iOS 多线程编程<八、NSOperation的基本使用>
- iOS 多线程编程<五、GCD其它用法>
- iOS 多线程编程<十六、RunLoop的基本应用>
- iOS 多线程编程<九、NSOperationQueue的基本使用>
- <iOS>NSScanner类的基本用法
- ios数组基本用法和排序
- iOS开发 -- UIScrollView基本用法
- iOS之Scanner基本用法
- NSURLSession的介绍与基本用法
- <iOS>enumerateKeysAndObjectsUsingBlock的用法
- iOS -- pch文件介绍 及用法 - $(SRCROOT)/工程名/pch文件名.pch -- <一>
- IOS 高级语法与设计模式5(5.3 协议的基本概念及用法)
- iOS之UIButton基本用法
- iOS之NSCanner的基本用法--扫描字符串
- IOS NSFileHandle 基本用法
- 详解iOS App中UiTabBarController组件的基本用法
- Log4cplus <2> 基本用法
- ios数组基本用法和排序
- iOS App开发中Masonry布局框架的基本用法解析