NSConnection_异步下载_代理

NSURLConnection的Delegate回调函数

接收到服务器的响应

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

接收到服务器发送过来的数据,数据是分段发给我们的,所以这个方法会被调用多次

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;

服务器所有的数据都发送完成之后,会调用这个方法

- (void)connectionDidFinishLoading:(NSURLConnection *)connection;

请求失败(url不合法、超时、网络中断等等)时会调用这个方法

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;

 

 1     //字符串地址
 2     NSString *path=@"http://10.0.8.8/sns/my/user_list.php";
 3
 4     //转网址
 5     NSURL *url=[NSURL URLWithString:path];
 6
 7     //请求类   创建请求对象
 8     NSURLRequest *request=[NSURLRequest requestWithURL:url];
 9
10
11     //设置代理   发送异步请求  代理方法
12     self.connection=[NSURLConnection connectionWithRequest:request delegate:self];17
18 }
19
20
21 //建立连接  完成了请求  接收响应
22 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
23
24     NSLog(@"收到服务器响应,即将建立链接,下载数据");
25     if ([response isKindOfClass:[NSHTTPURLResponse class]] == YES) {
26         //如果协议是http响应,证明响应是正确的,打印响应的状态
27         NSHTTPURLResponse * httpresponse = (id)response;
28         //        NSHTTPURLResponse继承自NSURLResponse
29         NSLog(@"%ld", (long)httpresponse.statusCode);
30         //200成功  404 是错误,没有响应。
31     }
32
33     //收到响应之后,connection会自然的建立链接,下载数据。
34
35     //清空_data
36     if (_mdata==nil) {
37         _mdata=[[NSMutableData alloc]init];
38     }
39     _mdata.length = 0;
40
41 }
42
43 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
44 {
45     NSLog(@"收到数据");
46     //如果数据比较大,这个函数会反复调用,每次获取部分数据,数据就是参数data
47
48     //将每次下载到的数据,拼接到_data中
49     [_mdata appendData:data];
50 }
51
52 - (void)connectionDidFinishLoading:(NSURLConnection *)connection
53 {
54     NSLog(@"数据接收完毕");
55
56     NSLog(@"%s", _mdata.bytes);
57     //解析
58     if (_mdata) {
59
60         id obj=[NSJSONSerialization JSONObjectWithData:_mdata options:NSJSONReadingMutableContainers error:nil];
61
62         NSLog(@"%@",obj);
63     }
64
65 }
66
67 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
68 {
69     NSLog(@"下载发生错误 %@", error);
70 }
时间: 2024-10-16 18:17:40

NSConnection_异步下载_代理的相关文章

NSConnection_异步下载Block

NSString * path = @"http://10.0.8.8/sns/my/user_list.php"; NSURL * url = [NSURL URLWithString:path]; NSURLRequest * request = [NSURLRequest requestWithURL:url]; //发送异步请求 //Queue 队列 线程 //[NSOperationQueue mainQueue] 主线程 //handler 程序处理 请求完成之后的处理bl

UI_18 图片异步下载、KVO

一.异步下载图片ImageViewDownloader 图?下载是iOS开发中常?的功能,但系统并未提供图?下载类. 为了便于后续使?,可以将图?下载封装到?个类?? (ImageDownloader) 新建SingleViewApplication,使用默认的Storyboard,向其中添加一个Button一个ImageView并关联属性.添加事件.点击Button实现异步下载并显示图片.AsynImageDownloader类封装了下载图片的方法. 使用代理进行AsynImageDownlo

网络数据的下载(NSUrlconnection异步下载和NSstring同步下载)和UI界面数据的刷新(都是抛弃第三方库的一些本质)

<1>NSString同步下载        //字符串的类方法,会根据url向服务器发起同步的数据请求,并将请求结果作为返回值    //同步请求数据,会对程序的UI主线程造成阻塞,用户体验极差 NSString *str = [NSString stringWithContentsOfURL:[NSURL URLWithString:kUrl] encoding:NSUTF8StringEncoding error:nil];    //json格式的数据 进行json解析 数据最外层是

Swift中利用NSURLConnection进行同步异步下载(实例解析)

原创blog,转载请注明出处 http://blog.csdn.net/hello_hwc 一.同步异步两个概念 简单来讲,同步就是函数或者闭包(objective c中的block)执行完毕才能返回.异步是立刻返回,然后异步执行的动作结束后,再进行回调. 二.同步下载 同步下载: class func sendSynchronousRequest(_ request: NSURLRequest, returningResponse response:AutoreleasingUnsafeMut

Swift正在使用NSURLConnection异步下载同步(实例解析)

原版的blog.转载请注明出处 http://blog.csdn.net/hello_hwc 一.同步异步两个概念 简单来讲.同步就是函数或者闭包(objective c中的block)运行完成才干返回. 异步是立马返回,然后异步运行的动作结束后.再进行回调. 二.同步下载 同步下载: class func sendSynchronousRequest(_ request: NSURLRequest, returningResponse response:AutoreleasingUnsafeM

SDWebImage异步下载和缓存的源码剖析

前言: 在移动app开发过程中,考虑到手机流量.网速以及内存等因素,当我们的app需要频繁的访问网络时,对网络优化这块的要求就显得尤为重要. 比如某个app需要经常重复显示很多张网络图片的时候,如果在每次需要显示同一张网络图片,都要访问网络进行下载操作,那就显得很不合理了. 因为那样会相当耗时,且耗流量.这就需要对已下载好的网络图片进行缓存操作. 我目前开发的一个项目属于展示类app,一个需要频繁处理网络图片的应用,涉及复杂的异步下载和异步缓存等处理. 在使用SDWebImage类库进行网络图片

HTTP_异步下载

//创建imageVIew对象 - (void)createImageView { UIImageView *imageView = [[UIImageView alloc]init]; //1 imageView.frame = CGRectMake(30, 120, 300, 400); imageView.backgroundColor = [UIColor redColor]; [self.view addSubview:imageView];//2 //[imageView relea

Android项目实战(三十一):异步下载apk文件并安装(非静默安装)

原文:Android项目实战(三十一):异步下载apk文件并安装(非静默安装) 前言: 实现异步下载apk文件 并 安装.(进度条对话框显示下载进度的展现方式) 涉及技术点: 1.ProgressDialog   进度条对话框  用于显示下载进度 2.AsyncTask         异步任务的使用    耗时操作不能再主线程中进行      安卓开发_浅谈AsyncTask 3.File                   文件相关操作    将文件的字节数据生成文件 4.自动打开安装应用操

android开发步步为营之67:使用android开源项目android-async-http异步下载文件

android-async-http项目地址 https://github.com/loopj/android-async-http,android-async-http顾名思义是异步的http请求,不过它也支持同步请求的,本文主要使用了android-async-http做异步请求下载文件.每当app需要更新新版本的时候,就需要用到下载功能的,经研究android-async-http这个第三方开源项目还是挺好用的,这里介绍给大家.     1.下载类DownloadManager.java