AFNetworking使用笔记

AFNetworking学习笔记

1.  将AFNetworking导入项目中

注:AFNetWorking使用了ARC ,在不使用ARC项目中使用时,对AFNetWorking的所有.m文件添加“-fobjc-arc” 

2.  添加3个类库:Security.framework、MobileCoreServices.framework、SystemConfiguration.framework 

3.先编译一下程序,如果这时就有编译错误就在Prefix.pch文件中加入 

#import<SystemConfiguration/SystemConfiguration.h> 

#import<MobileCoreServices/MobileCoreServices.h> 

4.AFN的特性

(1) AFURLConnectionOperation以及他的子类都继承自NSOperation, 可以对他进行 start/cancel/pause/resume 操作,可以获取对应的 NSURLRequest 和 NSURLResponse 数据。支持 NSInputStream/NSOutputStream,提供了 uploadProgress 和 downloadProgress以方便其他使用

(2) AFNetworking可以将远程媒体数据类型(NSData)转化为可用的格式,比如JSON,XML,图像和plist。

(3)AFHTTPClient提供了一个方便的网络交互接口,包括默认头,身份验证,是否连接到网络,批量处理操作,查询字符串参数序列化,以及多种表单请求

5.AFN与系统的HTTP请求API的对应关系

AFURLConnectionOperation-NSOperation的子类,负责管理 NSURLConnection 并且实 delegate 方法

l   AFHTTPRequestOperationAFURLConnectionOperation 的子类,用于生成 HTTP 求,可以区别可接受的和不可接受的状态码容类型

AFHTTPRequestOperationManager  - 包装常见 HTTP web 服务操作的类,通AFHTTPRequestOperation  NSURLConnection 支持

 

NSURLConnection

 

l   AFURLSessionManager  - 建、管理基于 NSURLSessionConfiguration 象的NSURLSession 象的类,也可以管理 session 据、下/任务,实 session 和其相联的任务的 delegate 方法。

l   AFHTTPSessionManagerAFURLSessionManager 的子类,包装常见的 HTTP web 服务操作,通 AFURLSessionManager  NSURLSession 支持。

 

NSURLSession (iOS 7 / Mac OS X 10.9)

 

 

§  AFHTTPRequestSerializer

§  AFJSONRequestSerializer

§  AFPropertyListRequestSerializer

§  AFHTTPResponseSerializer

 

AFURLRequestSerialization

 

§  AFJSONResponseSerializer

§  AFXMLParserResponseSerializer

§  AFXMLDocumentResponseSerializer (Mac OS X)

§  AFPropertyListResponseSerializer

§  AFImageResponseSerializer

§  AFCompoundResponseSerializer

 

AFURLResponseSerialization

 

  • AFSecurityPolicy
  • AFNetworkReachabilityManager

 

Additional Functionality

 


6.AFN的使用

1)AFHTTPRequestOperation

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: url]];
//创建一个AF的请求队列
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
//设置请求完成或失败的block
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", operation.responseString);
    NSData *resData = [[NSData alloc]initWithData:operation.responseData];    //系统自带JSON解析
    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:resData options:NSJSONReadingMutableLeaves error:nil];
    NSLog(@"resultDic:%@",resultDic);
   
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failure: %@", error);
}];
//开始执行队列中的请求
[operation start];

2) AFHTTPRequestOperationManager

GET和POST请求(所有的网络请求,均有manager发起 )

 要使用常规的AFN网络访问,要特别注意请求的数据的格式,否则很容易请求失败

 1. 需要注意的是,默认提交请求的数据是二进制的,返回格式是JSON  

 2. 请求格式 

     AFHTTPRequestSerializer            二进制格式 

     AFJSONRequestSerializer            JSON 

     AFPropertyListRequestSerializer    PList(是一种特殊的XML,解析起来相对容易) 

  

 3. 返回格式 

     AFHTTPResponseSerializer           二进制格式 

     AFJSONResponseSerializer           JSON 

     AFXMLParserResponseSerializer      XML,只能返回XMLParser,还需要自己通过代理方法解析 

     AFXMLDocumentResponseSerializer (Mac OS X) 

     AFPropertyListResponseSerializer   PList 

     AFImageResponseSerializer          Image 

     AFCompoundResponseSerializer       组合 

 

//GET请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//请求成功运行success块,请求失败failure块
[manager GET:@"http://www.weather.com.cn/data/sk/101010300.html" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"请求成功");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"请求失败:%@",error);
\}];


//post请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *dict = @{@"name": @"zhangsan"};
NSDictionary *dict1 = @{@"name": @"wangwu"};
NSArray *array = @[dict, dict1];
// 设置请求格式
manager.requestSerializer = [AFJSONRequestSerializer serializer];
// 设置返回格式
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:@"要提交数据的链接" parameters:array success:^(AFHTTPRequestOperation
operation, id responseObject) {
    NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
   
    NSLog(@"%@", result);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"error: %@",error);
}];


 

3) AFHTTPRequestSerializer & AFHTTPResponseSerializer(请求序列化和相应序列化)

//RequestSerializermanager一个post

[[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:baseUrl parameters:parameters error:nil];

 

AFHTTPRequestOperationManager则不需要实例化AFHTTPRequestSerializer的对象,只要设置    manager.requestSerializer = [AFHTTPRequestSerializer serializer];

关于序列化的使用还在研究,以后有心得再来分享!

7. UIKit
之前AFNetworking 中的所有 UIKit category 都被保留并增强,还增加了一些新的 category。

·      AFNetworkActivityIndicatorManager:在求操作始、停止加载时,自动始、停止状态栏上的网活动指示图标

·      UIImageView+AFNetworking:增加了 imageResponseSerializer 属性,可以松地让远程加 image view 上的像自动整大小或滤镜。比如,AFCoreImageSerializer可以在 response 示之前 Core Image filter

·      UIButton+AFNetworking ():与 UIImageView+AFNetworking 类似,从源加image  backgroundImage

·      UIActivityIndicatorView+AFNetworking ():根据指定的求操作和会任务的状态自动始、停止 UIActivityIndicatorView

·      UIProgressView+AFNetworking ():自动跟踪某个求或会任务的上/载进度。

·      UIWebView+AFNetworking (): URL求提供了更强大的API,支持度回转换

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值