本文共 2443 字,大约阅读时间需要 8 分钟。
NSURLConnection
(1)NSURL:请求地址
(2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法、请求头、请求体….
(3)NSMutableURLRequest:NSURLRequest的子类
(4)NSURLConnection:负责发送请求,建立客户端和服务器的连接。发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据
网络请求过程:1.设置请求路径
2.创建请求对象 3.发送请求 同步请求//1.设置请求路径 NSString *urlStr=[NSString stringWithFormat:@"http://xxx/xxx/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; NSURL *url=[NSURL URLWithString:urlStr]; // 2.创建请求对象 NSURLRequest *request=[NSURLRequest requestWithURL:url]; // 3.发送请求 //发送同步请求,在主线程执行 NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
Block异步请求
//发送异步请求 //获取一个主队列 NSOperationQueue *queue=[NSOperationQueue mainQueue]; [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { //隐藏HUD,刷新UI的操作一定要放在主线程执行 [MBProgressHUD hideHUD]; //解析数据 NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; if (data) { //请求成功 NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; NSLog(@"%@",dict); //判断后,在界面提示登录信息 NSString *error=dict[@"error"]; if (error) { [MBProgressHUD showError:error]; }else { NSString *success=dict[@"success"]; [MBProgressHUD showSuccess:success]; } }else //请求失败 { [MBProgressHUD showError:@"网络繁忙,请稍后重试!"]; } }];
delegate异步请求
- (void)httpConnectionWithRequest{ NSString *URLPath = [NSString stringWithFormat:@"http://url"]; NSURL *URL = [NSURL URLWithString:URLPath]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; request.timeoutInterval=5.0;//设置超时时间 [NSURLConnection connectionWithRequest:request delegate:self];}#pragma mark- NSURLConnectionDataDelegate代理方法//当接收到服务器的响应(连通了服务器)时会调用-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response//当接收到服务器的数据时会调用(可能会被调用多次,每次只传递部分数据)-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data//当服务器的数据加载完毕时就会调用-(void)connectionDidFinishLoading:(NSURLConnection *)connection//请求错误(失败)的时候调用(请求超时\断网\没有网\,一般指客户端错误)-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
转载地址:http://xjtsi.baihongyu.com/