异步get请求之代理方法

 1 #import "ViewController.h"
 2 #import "Header.h"
 3 
 4 @interface ViewController ()<NSURLSessionDataDelegate>
 5 
 6 /**
 7  *  用于保存相关的数据
 8  */
 9 @property (nonatomic, strong) NSMutableData *resultData;
10 
11 @end
12 
13 @implementation ViewController
14 
15 - (void)viewDidLoad {
16     [super viewDidLoad];
17     // Do any additional setup after loading the view, typically from a nib.
18 }
19 
20 // 对数据进行加载:使用NSURLSessionDataTask和NSURLSessionTask两者没有本质区别
21 // 要处理下载任务的使用使用此任务NSURLSessionDownloadTask
22 // 要处理上传任务使用:NSURLSessionUploadTask
23 
24 #pragma mark - get请求(异步)
25 - (IBAction)getRequest:(UIButton *)sender {
26 
27     // 1.创建url
28     NSURL *url = [NSURL URLWithString:GET_URL];
29 
30 
31     // 2.创建session对象
32     // 参数一:模式的设置
33     /*
34      defaultSessionConfiguration 默认会话模式
35      ephemeralSessionConfiguration 瞬时会话模式
36      backgroundSessionConfigurationWithIdentifier 后台会话模式
37      */
38     // 参数二:代理
39     // 参数三:线程队列
40     NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
41     
42     
43     // 3.创建task对象
44     NSURLSessionDataTask *task = [session dataTaskWithURL:url];
45     
46     
47     // 4.启动任务
48     [task resume];
49     
50 }
51 
52 
53 #pragma mark - 实现协议方法
54 // 服务器开始响应
55 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler {
56     
57     // 允许服务器响应【在这个地方只有允许服务器响应了才会接收到数据】
58     completionHandler(NSURLSessionResponseAllow);
59     
60     // 初始化data,稍后进行片段的拼接存储
61     self.resultData = [NSMutableData data];
62 }
63 
64 // 接收数据拼接
65 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
66     
67     // 反复执行,然后拼接相关的片段
68     [self.resultData appendData:data];
69 }
70 
71 // 数据接收完成,网络请求结束
72 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
73     
74     // 解析
75     if (error == nil) {
76         NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:self.resultData options:NSJSONReadingAllowFragments error:nil];
77         NSLog(@"%@", dic);
78     }
79 }
80 
81 @end

 

转载于:https://www.cnblogs.com/zhizunbao/p/5482863.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值