异步发送请求
ASI以异步的方式发送网络请求有三种方式,第一种是通过代理进行监听;第二种方法是通过block进行监听。还有一种方法时使用selector,这是建立在设置代理的基础之上的,调用的方法会覆盖代理方法。
第一种方法:
/** * 异步请求的第一种方式:设置代理,用代理方法监听 */ -(void)async1 { //1.创建网络请求(GET) NSURL *url=[NSURL URLWithString:@"http://127.0.0.1:8080/MJServer/login?username=123&pwd=123"]; self.request=[ASIHTTPRequest requestWithURL:url]; //设置网络请求的延时为10秒钟 self.request.timeOutSeconds=10; //2.设置代理 self.request.delegate=self; //3.发送请求(异步请求) [self.request startAsynchronous]; } #pragma mark-异步请求的代理方法 //请求开始的时候调用 -(void)requestStarted:(ASIHTTPRequest *)request { } //接收到服务器返回的数据时调用(数据量比较大的时候,这个方法会被调用多次,每次只能拿到部分数据) -(void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data { } //请求结束的时候调用(在该方法中拿到最终的数据) -(void)requestFinished:(ASIHTTPRequest *)request { //request.responseData:服务器返回的所有数据,这个data已经拼接了接收到的所有数据 } //发送网络请求失败的时候调用 -(void)requestFailed:(ASIHTTPRequest *)request { }
第二种方法:
/** * 异步请求的第二种方式:selector,以设置代理为基本前提 */ -(void)async2 { //1.创建网络请求(GET) NSURL *url=[NSURL URLWithString:@"http://127.0.0.1:8080/MJServer/login?username=123&pwd=123"]; self.request=[ASIHTTPRequest requestWithURL:url]; //设置网络请求的延时为10秒钟 self.request.timeOutSeconds=10; //2.设置代理 self.request.delegate=self; //通过selector的方法,当请求开始的时候,由请求的代理即控制器调用start方法进行监听 //说明:该方法会覆盖代理方法 [self.request setDidStartSelector:@selector(start)]; //3.发送请求(异步请求) [self.request startAsynchronous]; } -(void)start { NSLog(@"该方法会覆盖代理方法中得对应方法"); }
第三种方法:
/** * 异步请求的第三种方式:使用block回调 */ -(void)async3 { //1.创建网络请求(GET) NSURL *url=[NSURL URLWithString:@"http://127.0.0.1:8080/MJServer/login?username=123&pwd=123"]; self.request=[ASIHTTPRequest requestWithURL:url]; //设置网络请求的延时为10秒钟 self.request.timeOutSeconds=10; //2.使用block回调监听 [self.request setStartedBlock:^{ //请求开始的时候调用 }]; [self.request setFailedBlock:^{ //请求失败的时候调用 }]; [self.request setDataReceivedBlock:^(NSData *data) { //开始接收数据的时候调用 }]; [self.request setCompletionBlock:^{ //请求成功完成的时候调用 }]; //3.发送请求(异步请求) [self.request startAsynchronous]; }
提示:block是ios4之后才引入的技术。
这两种方法各有优缺点
说明:如果要同时发送多个请求,他们都设置控制器为自己的代理,这样需要进行一些必要的判断。而如果各自都是有block这样的方式的话,那么将不会存在这些问题,多个请求之间相互不存在干扰。
相关推荐
ASI教程,异步,block,同步,下载,session,验证,登陆
使用ASIHTTPRequest写的一个简单demo 里面包含了系统同步 异步下载 ASI同步 异步下载图片
iOS--ASI第三方网络请求框架,使用把文件导入项目,并在头文件中引用
ASIHttpRequest是iOS开发必备的网络数据请求包,使用方便,唯一的缺点是非ARC的,需要设置项目中的非ARC类
基于ASI的封装,简单易用,再也不用在每个请求数据的地方写一堆代码了
全称是ASIHTTPRequest,外号“HTTP终结者”,可以实现http网络请求,功能十分强大。
基于MbpsAlteraASIIPFPGA核的ASI发送MPEGFIFOTs卡实现。硬件FPGA开发参考。
ASI和SDI的区别 广电领域传输。介绍这2种线的区别。串行传输和异步传输
之前ASI的网络库中是有同步请求的接口,所以很好处理,AFNetwork的网络库只有异步的网络请求,该怎么实现呢? 1.循环异步拼组 - (void)uploadFile:(NSArray *)imageArray atIndex:(NSInteger)index imagesCount:...
在目前的DVB-C广播电视系统的传输接口中,有两种MPEG-2视频传输接口标准:异步串行接口标准 ASI和同步并行接口SPI。SPI一共有11位有用信号,每位信号差分成两个信号用来提高传输抗干扰性,在物理链接上用DB25传输,...
ASI网关手册 很不容易下载的有关ASI的手册,很值得拥有
在目前的数字电视通信系统中,有两种MPEG-2接口标准:ASI异步串行接口和SPI同步并行接口。ASI(异步串行接口)只需要一根电缆就可实现270Mbit/s的透明传输,所以应用十分普遍。ASI接口具有高速、可靠、固定波特率和传输...
实现ASIHttpRequest下简单的异步多文件下载!
ASI-GSD,用于识别ASI元件,在编程软件界面下可以看到
摘要:本文提出了一种基于Altera 公司的ASI IP核来代替Cypress公司的CY7B923实现ASI信号的发送,详细阐述了ASI IP 核的实现。使用 FPGA 编程实现 ASI 接口转换与发送功能,具有更大的灵活性,且接口复合 DVB-ASI 接口...
快捷方便的请求类 大多数的开发都在使用的一个 开源库 用起来特别顺手
ASIHTTPRequest对CFNetwork API进行了封装,...在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制 l 支持断点续传 l 支持同步和异步请求
完整的ALTERA的ASI 188或204格式的接收、发送代码。包括应用举例等等。做技术开发的人员值得参考哈,同时对工程涉及到此类的开发,特别是FPGA的应用有很大的帮助。
西门子3RK3 MSS:如何通过ASI网络实现设备诊断功能?pdf,西门子3RK3 MSS:如何通过ASI网络实现设备诊断功能?如何通过AS-I网络实现设备诊断功能?可以通过与从站设定通讯规约实现数据传输。MSS 3RK3高级版可以支持...
(1)ASI原理基础知识、规划设计注意事项(文档资料) (2)倍加福、必威、西门子ASI ET200模块等多种产品ASI网关通信程序案例 (3)ASI常见问题、资料手册