ios-ASIHTTPRequest框架介绍

ASIHTTPRequest框架是基于Object-C的优秀的第三方HTTP框架,支持Mac OS X和ios下的HTTP开发,其技术支持网站是http://allseeing-i.com/ASIHTTPRequest/

该框架的特点:

1、容易访问请求和应答HTTP头

2、支持cookie

3、支持gzip请求或者应答

4、支持缓存

5、支持同步或者异步请求

6、支持HTTPS

7、不支持ARC技术


该框架在项目中的配置如下图所示:

   

如果使用ASIHTTPRequest 提示#import <libxml/HTMLparser.h>找不到,可以按照下图进行进一步配置:


也就是在header search path 加入 ${SDK_DIR}/usr/include/libxml2 这句话,即可解决问题。


下面是代码演示:

// ASIHTTPRequest--同步GET(Synchro GET)
- (void)SynchroGET:(id)sender
{
    NSString *str = [NSString stringWithFormat:@"http://iosbook1.com/service/mynotes/webservice.php?email=%@&type=%@&action=%@",@"chenximincool@163.com",@"JSON",@"query"];
    
    NSURL *url = [NSURL URLWithString:str];
    
    // GET使用ASIHTTPRequest
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    
    [request startSynchronous];  // 同步GET
    
    NSLog(@"请求完成!");
    NSError *error = [request error];
    
    if (!error)
    {
        NSData *data = [request responseData];
        NSLog(@"%@",data);
    }
}

// ASIHTTPRequest--异步GET(Asynchro GET)
- (void)AsynchroGET:(id)sender
{
    NSString *str = [NSString stringWithFormat:@"http://iosbook1.com/service/mynotes/webservice.php?email=%@&type=%@&action=%@",@"chenximincool@163.com",@"JSON",@"query"];
    
    NSURL *url = [NSURL URLWithString:str];
    
    // GET使用ASIHTTPRequest
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request startAsynchronous];  // 异步GET
}

// ASIFormDataRequest--同步POST(Synchro POST)
- (void)SynchroPOST:(id)sender
{
    NSString *str = [NSString stringWithFormat:@"http://iosbook1.com/service/mynotes/webservice.php"];
    
    NSURL *url = [NSURL URLWithString:str];
    
    // POST使用ASIFormDataRequest
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:@"chenximincool@163.com" forKey:@"email"];
    [request setPostValue:@"JSON" forKey:@"type"];
    [request setPostValue:@"query" forKey:@"action"];
    
    [request startSynchronous];  // 同步POST
    
    NSLog(@"请求完成!");
    NSError *error = [request error];
    
    if (!error)
    {
        NSData *data = [request responseData];
        NSLog(@"%@",data);
    }
}

// ASIFormDataRequest--异步POST(Asynchro POST)
- (void)AsynchroPOST:(id)sender
{
    NSString *str = [NSString stringWithFormat:@"http://iosbook1.com/service/mynotes/webservice.php"];
    
    NSURL *url = [NSURL URLWithString:str];
    
    // POST使用ASIFormDataRequest
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:@"chenximincool@163.com" forKey:@"email"];
    [request setPostValue:@"JSON" forKey:@"type"];
    [request setPostValue:@"query" forKey:@"action"];
    
    [request setDelegate:self];
    [request startAsynchronous];  // 异步POST
}

// 异步代理
- (void)requestStarted:(ASIHTTPRequest *)request
{
    NSLog(@"requestStarted");
}

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders
{
    NSLog(@"didReceiveResponseHeaders");
}

- (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data
{
    NSLog(@"didReceiveData");
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
    NSLog(@"requestFailed");
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
    NSData *data = [request responseData];
    NSLog(@"data:%@",data);
    
    NSLog(@"requestFinished");
}

// ASINetworkQueue--多线程并发请求
- (void)NetworkQueue:(id)sender
{
    if (!_networkQueue)
    {
        _networkQueue = [[ASINetworkQueue alloc] init];
    }
    
    [_networkQueue cancelAllOperations];  // 停止以前的队列
    
    // 创建ASI队列和设置各种回调函数
    [_networkQueue setDelegate:self];
    [_networkQueue setRequestDidStartSelector:@selector(customRequestStarted:)];
    [_networkQueue setRequestDidReceiveResponseHeadersSelector:@selector(customRequestReceivedResponseHeaders:)];
    [_networkQueue setRequestDidFailSelector:@selector(customRequestFailed:)];
    [_networkQueue setRequestDidFinishSelector:@selector(customRequestFinished:)];
    
    for (int i = 0; i < 3; i ++)
    {
        NSString *str = [NSString stringWithFormat:@"http://iosbook1.com/service/download.php?email=%@&FileName=test%d.jpg",@"chenximincool@163.com",i];
        
        NSURL *url = [NSURL URLWithString:str];
        
        ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
        request.tag = i;
        [_networkQueue addOperation:request];
    }
    
    [_networkQueue go];  // 开始并发请求
}

- (void)customRequestStarted:(ASIHTTPRequest *)request
{
    NSLog(@"customRequestStarted");
}

- (void)customRequestReceivedResponseHeaders:(ASIHTTPRequest *)request
{
    NSLog(@"customRequestReceivedResponseHeaders");
}

- (void)customRequestFailed:(ASIHTTPRequest *)request
{
    NSLog(@"customRequestFailed");
    
    NSError *error = [request error];
    NSLog(@"%@",[error localizedDescription]);
}

- (void)customRequestFinished:(ASIHTTPRequest *)request
{
    NSData *data = [request responseData];
    
    NSLog(@"customRequestFinished--data:%@",data);
}


至此,ASIHTTPRequest框架介绍完毕,其余类似的第三方HTTP框架也是同样的使用道理,可以触类旁通。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值