1.同步请求
1 -(void)sync 2 { 3 //1.确定请求路径 4 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520&type=JSON"]; 5 6 //2.创建请求对象 7 /* 8 url:请求路径 9 */ 10 NSURLRequest *request = [NSURLRequest requestWithURL:url]; 11 12 //3.NSURLConnection发送同步请求 13 /* 14 第一个参数:请求对象 15 第二个参数:响应头 16 第三个参数:错误信息 17 返回值:响应体 18 注意点:sendSynchronousRequest会卡主线程 19 */ 20 NSURLResponse *response = nil; 21 NSError *error = nil; 22 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 23 24 NSLog(@"---------%@",response); 25 26 // NSLog(@"%zd--",data.length); 27 //4.解析数据 28 NSString *res = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 29 NSLog(@"%@",res); 30 31 }
2.异步请求
1 -(void)async 2 { 3 //1.确定请求路径 4 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520&type=JSON"]; 5 6 //2.创建请求对象 7 /* 8 url:请求路径 9 默认GET方法 10 */ 11 NSURLRequest *request = [NSURLRequest requestWithURL:url]; 12 13 //3.NSURLConnection发送异步请求 14 /* 15 第一个参数:请求对象 16 第二个参数:队列, 17 第三个参数:当请求结束之后会调用该block 18 response:响应头 19 data:响应体 20 connectionError:如果请求失败那么error有值 21 */ 22 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { 23 24 if (connectionError) { 25 NSLog(@"请求失败"); 26 }else 27 { 28 NSHTTPURLResponse *respon = (NSHTTPURLResponse *)response; 29 NSLog(@"%zd--%@",respon.statusCode,respon.allHeaderFields); 30 31 //当请求结束之后会调用该block 32 //4.解析数据 33 NSString *res = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 34 NSLog(@"%@---%@",res,[NSThread currentThread]); 35 } 36 37 }]; 38 }
3.代理请求
1 -(void)delegate 2 { 3 //1.确定请求路径 4 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion_02.png"]; 5 6 //2.创建请求对象 7 NSURLRequest *request = [NSURLRequest requestWithURL:url]; 8 9 //3.设置代理,发送异步请求 10 //第一种 11 // [NSURLConnection connectionWithRequest:request delegate:self]; 12 //第二种 13 // NSURLConnection *connt = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 14 15 NSURLConnection *connt = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:NO]; 16 17 [connt start]; 18 } 19 20 #pragma mark NSURLConnectionDataDelegate start------ 21 /* 22 1.当接收到服务器响应的时候调用 23 */ 24 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 25 { 26 NSLog(@"---didReceiveResponse-"); 27 } 28 29 /* 30 2.当接收到服务器返回数据的时候调用,会被调用多次 31 */ 32 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 33 { 34 NSLog(@"---didReceiveData-%zd",data.length); 35 } 36 37 /* 38 3.当请求结束之后调用 39 */ 40 -(void)connectionDidFinishLoading:(NSURLConnection *)connection 41 { 42 NSLog(@"---connectionDidFinishLoading-"); 43 } 44 /* 45 3.当请求失败之后调用 46 */ 47 -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 48 { 49 NSLog(@"---didFailWithError-"); 50 }
浙公网安备 33010602011771号