NSURLConnection-网络访问(同步异步)
/********访问网络同步请求、异步请求基本概念********/ // 访问网络的基本概念 访问网络方式: 同步请求 : 主线程执行 , 请求无法取消, 无法坚挺加载进度 异步请求 : 多线程执行 , 请求可以取消, 可以监听// 访问网络的基本流程:(简略说明) 构造NSURL实例(地址) 生成NSURLRequest请求 通过NSURLConnection发送请求 通过返回NSURLRespond实例和NSError实例分析结果 接受返回数据// NSURL释义与常用方法 NSURL实例包装了一个地址信息,可以是本地地址,也可以是远程地址 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];/********NSURLRequest的使用********/ // NSURLRequest的使用 NSURLRequest包装了网络请求的信息。 NSURLRequest *request = [NSURLRequest requestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60]; NSURLRequestUseProtocolCachePolicy参考-> // http://www.cnblogs.com/pengyingh/articles/2343083.html// NSMutableRequest的使用 相对于NSRequest,可以对请求信息重新设置 示例: NSMutableRequest *request [[NSMutableRequest alloc]init]; [request setURL:url]; // 设置请求方式get/post [request setHTTPMethod:@"POST"]; // 设置超时时间 [request setTimeoutInterval:60]; // 设置请求参数 [request setHTTPBody:_data]; // 设置请求头 [request setValue:@"tttt" forHTTPHeaderField:@"cookes"];/********同步请求用法********/ //构造url NSURL *url = [NSURL URLWithString:@"http://www.iphonetrain.com"]; //创建一个请求对象 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //响应 NSURLResponse *response; //发送同步请求,请求成功后返回数据 NSData *resultData = [NSURLConnection sendSynchronousRequest:requestreturningResponse:&responseerror:nil]; // -------data转化为string------ NSString *dataString = [[NSString alloc]initWithData:resultDataencoding:NSUTF8StringEncoding];/********异步请求用法********/ // 第一种方式(代理方式) //发送异步请求 [NSURLConnection connectionWithRequest:request delegate:self]; //delegate 接受加载的数据 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {[_data appendData:data]; } //delegate 数据加载完后调用 - (void)connectionDidFinishLoading:(NSURLConnection *)connection {NSString *dataString = [[NSString alloc]initWithData:_dataencoding:NSUTF8StringEncoding]; } // 第二种方式(开辟一个子线程,结合创建多线程的多种方式) //启动一个新的线程加载数据 [self performSelectorInBackground:@selector(loadData) withObject:nil]; //loadData发送同步请求(发送一个普通的请求) - (void)loadData {NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];NSURL *url = [NSURL URLWithString:request_url];NSURLRequest *request = [NSURLRequest requestWithURL:url];//发送同步请求,获取数据dataNSData *data = [NSURLConnection sendSynchronousRequest:requestreturningResponse:&responseerror:nil];//回到主线程调用方法 [self performSelectorOnMainThread:@selector(afterLoadData)withObject:stringDatawaitUntiDone:NO]; // 直到子线程任务完成 [pool release]; }/********取消异步请求********/ //发送cancel取消请求,同步请求无法取消。 //取消请求后,网络请求会按失败处理,会调用失败的代理 [request cancel];
转载于:https://www.cnblogs.com/needly/p/3401040.html
NSURLConnection-网络访问(同步异步)相关推荐
- OPC的数据访问方法分别有同步访问、异步访问和订阅式
OPC的数据访问方法分别有同步访问.异步访问和订阅式数据采集方式三种. 1 同步数据访问方式 OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OPC应用程序,OPC应用程序 ...
- 面试必会系列 - 5.1 网络BIO、NIO、epoll,同步/异步模型、阻塞/非阻塞模型,你能分清吗?
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- Java网络编程------IO模型的同步/异步/阻塞/非阻塞(1)
IO模型的同步/异步/阻塞/非阻塞 一.同步/异步/阻塞/非阻塞 1.同步和异步 2.阻塞和非阻塞 3.同步.异步和阻塞.非阻塞组合 二.IO 1.I/O 2.阻塞IO和非阻塞IO 3.同步IO和同步 ...
- 网络编程 多道技术与同步/异步和阻塞/非阻塞
UDP协议服务端模板代码 import socketserver = socket.socket(type=socket.SOCK_DGRAM) # 创建socket对象,括号内选择类型为UDPser ...
- 刷机后连接上wifi提示网络访问受限时间不同步问题解决方法小米8刷魔趣WIFI无法联网解决方法
安全提示:操作前,请确保自己的手机已经解锁,不然分区加密状态下,如法写入数据,也就无法保证刷入成功. 手里闲置一台小米8,性能配置,大小手感都还不错,所以一直留着.闲着无事拿出来折腾一下,刷个魔趣系统 ...
- 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?
本文内容涉及同步与异步, 阻塞与非阻塞, BIO.NIO.AIO等概念, 这块内容本身比较复杂, 很难用三言两语说明白. 而书上的定义更不容易理解是什么意思. 下面跟着我一起解开它们神秘的面纱. BI ...
- Android—OkHttp同步异步请求过程源码分析与拦截器
OkHttp同步请求步骤: 创建OkHttpClient,客户对象 创建Request,请求主体,在请求主体设置请求的url,超时时间等 用newCall(request)将Reuqest对象封装成C ...
- C#.net同步异步SOCKET通讯和多线程总结(转)
C#.net同步异步SOCKET通讯和多线程总结 来源:http://www.cnblogs.com/Silverlight_Team/archive/2009/03/13/1411136.html ...
- setState同步异步场景
setState同步异步场景 React通过this.state来访问state,通过this.setState()方法来更新state,当this.setState()方法被调用的时候,React会 ...
最新文章
- Python API vs C++ API of TensorRT
- mysql 5.6 初始化_MySQL 5.6 关于登陆的初始化设置
- 【PAT乙级】1055 集体照 (25 分)
- 在Oracle Coherence中分发Spring Bean
- 安装后jdk1.8 配置环境变量以后 版本显示还是1.7
- DevExpress v15.1:XAF控件升级
- 记一次 Redis Cluster 宕机引发的事故
- 解决问题__max 模型白色 材质球换没用
- 不能算是读后感的读后感
- Redis 6.0 源码阅读笔记(10) -- 主从复制 Master 节点流程分析
- Oracle数据库的ORA-00257故障解决过程(转载)
- qq pc9.4协议机器人框架源码
- 弱监督学习和小目标检测
- spring mvc 扫描与注解
- 电商运营数据分析常用分析指标--概述及流量指标
- “你没有权限操作该项”phpcms权限解决一例
- Deployer php自动部署,简单轻松部署你的项目 - Deployer
- 电机qudong电路
- 树莓派4通过华为ME909S 4G模块连接蜂窝网(非PPP)
- 千川数据返回值解析(AES)解密