现在的位置: 首页 > 综合 > 正文

ios-ASIHTTPRequest框架介绍

2016年08月30日 ⁄ 综合 ⁄ 共 4265字 ⁄ 字号 评论关闭

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框架也是同样的使用道理,可以触类旁通。

抱歉!评论已关闭.