`
stephen830
  • 浏览: 2964969 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ASI以异步的方式发送网络请求有三种方式

 
阅读更多

 

异步发送请求

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教学,异步

    ASI教程,异步,block,同步,下载,session,验证,登陆

    iOS系统同步异步下载 ASI同步异步下载图片源代码

    使用ASIHTTPRequest写的一个简单demo 里面包含了系统同步 异步下载 ASI同步 异步下载图片

    iOS--ASI第三方网络请求框架

    iOS--ASI第三方网络请求框架,使用把文件导入项目,并在头文件中引用

    ASIHttpRequest网络请求工具

    ASIHttpRequest是iOS开发必备的网络数据请求包,使用方便,唯一的缺点是非ARC的,需要设置项目中的非ARC类

    对asi 网络请求类的封装

    基于ASI的封装,简单易用,再也不用在每个请求数据的地方写一堆代码了

    ASIHttpRequest网络请求框架

    全称是ASIHTTPRequest,外号“HTTP终结者”,可以实现http网络请求,功能十分强大。

    基于MbpsAlteraASIIPFPGA核的ASI发送MPEGFIFOTs卡实现

    基于MbpsAlteraASIIPFPGA核的ASI发送MPEGFIFOTs卡实现。硬件FPGA开发参考。

    ASI和SDI的区别

    ASI和SDI的区别 广电领域传输。介绍这2种线的区别。串行传输和异步传输

    IOS开发中异步网络请求上实现同步逻辑

    之前ASI的网络库中是有同步请求的接口,所以很好处理,AFNetwork的网络库只有异步的网络请求,该怎么实现呢? 1.循环异步拼组 - (void)uploadFile:(NSArray *)imageArray atIndex:(NSInteger)index imagesCount:...

    DVB-C视频传输接口ASI的实现

    在目前的DVB-C广播电视系统的传输接口中,有两种MPEG-2视频传输接口标准:异步串行接口标准 ASI和同步并行接口SPI。SPI一共有11位有用信号,每位信号差分成两个信号用来提高传输抗干扰性,在物理链接上用DB25传输,...

    ASI网关手册

    ASI网关手册 很不容易下载的有关ASI的手册,很值得拥有

    基于Altera ASI IP核的ASI发送卡实现

    在目前的数字电视通信系统中,有两种MPEG-2接口标准:ASI异步串行接口和SPI同步并行接口。ASI(异步串行接口)只需要一根电缆就可实现270Mbit/s的透明传输,所以应用十分普遍。ASI接口具有高速、可靠、固定波特率和传输...

    ASI异步下载

    实现ASIHttpRequest下简单的异步多文件下载!

    ASI-GSD识别ASI元件

    ASI-GSD,用于识别ASI元件,在编程软件界面下可以看到

    基于Altera ASI IP核的ASI 发送卡实现

    摘要:本文提出了一种基于Altera 公司的ASI IP核来代替Cypress公司的CY7B923实现ASI信号的发送,详细阐述了ASI IP 核的实现。使用 FPGA 编程实现 ASI 接口转换与发送功能,具有更大的灵活性,且接口复合 DVB-ASI 接口...

    iOS 开发 ASI 请求

    快捷方便的请求类 大多数的开发都在使用的一个 开源库 用起来特别顺手

    IOS开发第3方库之ASI下载

    ASIHTTPRequest对CFNetwork API进行了封装,...在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制 l 支持断点续传 l 支持同步和异步请求

    altera asi收发应用

    完整的ALTERA的ASI 188或204格式的接收、发送代码。包括应用举例等等。做技术开发的人员值得参考哈,同时对工程涉及到此类的开发,特别是FPGA的应用有很大的帮助。

    西门子3RK3 MSS:如何通过ASI网络实现设备诊断功能?.pdf

    西门子3RK3 MSS:如何通过ASI网络实现设备诊断功能?pdf,西门子3RK3 MSS:如何通过ASI网络实现设备诊断功能?如何通过AS-I网络实现设备诊断功能?可以通过与从站设定通讯规约实现数据传输。MSS 3RK3高级版可以支持...

    TIA_ASI通信(包含西门子asi master以及多种品牌ASI设备程序案例)

    (1)ASI原理基础知识、规划设计注意事项(文档资料) (2)倍加福、必威、西门子ASI ET200模块等多种产品ASI网关通信程序案例 (3)ASI常见问题、资料手册

Global site tag (gtag.js) - Google Analytics