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 }
原文地址:https://www.cnblogs.com/konglei/p/4830519.html