AFNetWorking快速教程

AFNetworking官网入门教程简单翻译,学习
AFNetworking 是一个能够快速使用的ios和mac os x下的网络框架,它是构建在Foundation URL Loading System之上的,封装了网络的抽象层,可以方便的使用,AFNetworking是一个模块化架构,拥有丰富api的框架。

一、HTTP请求与操作:
1、AFHTTPRequestOperationManager:
该类封装与Web应用程序进行通信通过HTTP,包括要求制作,响应序列化,网络可达性监控和安全性,以及要求经营管理的常见模式。

GET 请求:
[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {  
    NSLog(@"JSON: %@", responseObject);  
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    NSLog(@"Error: %@", error);  
}];  

POST 带有表单参数的POST请求:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
NSDictionary *parameters = @{@"foo": @"bar"};  
[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {  
    NSLog(@"JSON: %@", responseObject);  
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    NSLog(@"Error: %@", error);  
}];  

POST Multi-Part格式的表单文件上传请求:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
NSDictionary *parameters = @{@"foo": @"bar"};  
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];  
[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
    [formData appendPartWithFileURL:filePath name:@"image" error:nil];  
} success:^(AFHTTPRequestOperation *operation, id responseObject) {  
    NSLog(@"Success: %@", responseObject);  
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    NSLog(@"Error: %@", error);  
}];  

二、Session管理:
1、AFURLSessionManager:创建和管理制定的NSURLSession对象
2、NSURLSessionConfiguration对象必须实现, , , 协议

3.创建一个下载任务:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];  
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];  

NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];  
NSURLRequest *request = [NSURLRequest requestWithURL:URL];  

NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];  
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {  
    if (error) {  
        NSLog(@"Error: %@", error);  
    } else {  
        NSLog(@"Success: %@ %@", response, responseObject);  
    }  
}];  
[uploadTask resume];  

创建一个数据流任务:
[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];  
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];  

NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];  
NSURLRequest *request = [NSURLRequest requestWithURL:URL];  

NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {  
    if (error) {  
        NSLog(@"Error: %@", error);  
    } else {  
        NSLog(@"%@ %@", response, responseObject);  
    }  
}];  
[dataTask resume];  

四、使用AFHTTPRequestOperation
1、AFHTTPRequestOperation是使用HTTP或HTTPS协议的AFURLConnectionOperation的子类。
它封装的获取后的HTTP状态和类型将决定请求的成功与否。
2、虽然AFHTTPRequestOperationManager通常是最好的去请求的方式,但是AFHTTPRequestOpersion也能够单独使用。

通过GET方式:

NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"];  
NSURLRequest *request = [NSURLRequest requestWithURL:URL];  
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];  
op.responseSerializer = [AFJSONResponseSerializer serializer];  
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {  
    NSLog(@"JSON: %@", responseObject);  
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
    NSLog(@"Error: %@", error);  
}];  
[[NSOperationQueue mainQueue] addOperation:op];  

连续操作多个请求:

NSMutableArray *mutableOperations = [NSMutableArray array];  
for (NSURL *fileURL in filesToUpload) {  
    NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
        [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil];  
    }];  

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];  
    [mutableOperations addObject:operation];  
}   
NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:@[...] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {  
    NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations);  
} completionBlock:^(NSArray *operations) {  
    NSLog(@"All operations in batch complete");  
}];  
[[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO];  

AFNetworking官网:http://afnetworking.com/
文档原文:http://cocoadocs.org/docsets/AFNetworking/2.0.3/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值