IOS学习:常用第三方库(ASIHttpRequest)

ASIHttpRequest是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套http请求api。


官方地址:http://allseeing-i.com/ASIHTTPRequest/


依赖库:CFNetwork.framework、SystemConfiguration.framework、MobileCoreServices.framework、CoreGraphics.framework和libs.1.2.3dylib


下面是简单的http请求示例:

1、同步的http请求

// 简单的同步请求示例
- (void)syncRequest {
    NSURL *url = [NSURLURLWithString:@"http://www.weather.com.cn/data/sk/101010100.html"];
    ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
    [request startSynchronous];
    NSError *error = [request error];
    if (!error) {
        NSString *response = [request responseString];
        NSLog(@"Response :%@", response);
        self.result.text = response;
    } else {
        self.result.text = @"error";
    }
}


2、异步的http请求

// 简单的异步请求示例(代理实现)
- (void)asyncRequest {
    NSURL *url = [NSURLURLWithString:@"http://www.weather.com.cn/data/cityinfo/101010100.html"];
    ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
    request.delegate = self;
    // 开始异步请求
    [request startAsynchronous];
}



代理方法:

// 请求完成
- (void)requestFinished:(ASIHTTPRequest *)request
{
    // 如果请求的是二进制数据,用responseData,用NSData接收
    NSLog(@"异步请求成功返回");
    self.result.text = [request responseString];
}

// 请求失败
- (void)requestFailed:(ASIHTTPRequest *)request
{
    NSLog(@"异步请求失败");
    self.result.text = @"error";

}



3、块语法实现的异步请求

// 简单的异步请求用块语法实现
- (void)asyncRequestBlock {
    NSURL *url = [NSURLURLWithString:@"http://m.weather.com.cn/data/101010100.html"];
    __blockASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
    [request setCompletionBlock:^{
       // 请求响应结束
        NSString *response = [request responseString];
        self.result.text = response;
    }];
   
    [request setFailedBlock:^{
       // 请求失败
        NSError *error = [request error];
//        self.result.text =
        NSLog(@"error : %@", [error userInfo]);
    }];
   
    [request startAsynchronous];
}


你可能感兴趣的:(ios,ASIHTTPRequest)