博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之NSURLConnection
阅读量:4108 次
发布时间:2019-05-25

本文共 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/

你可能感兴趣的文章
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>