AFN

1. AFHTTPRequestOperationManager: 封装的是 NSUrlConnection ; 3.0之后已经被舍弃.

  iOS 9.0 之前使用最多的一个类. 类似于 AFHTTPSessionManager (封装的是 NSUrlSession),专门用来发送网络请求的!

 

  AFNetworkReachabilityManager :用来实时监测当前网络状态的!

 

  AFSecurityPolicy :安全策略:支持 HTTPS 请求.

 

  AFN 主要用来发送网络请求. 特点: 会自动/默认解析 JSON 数据!

 

 2.AFN 成功回调的要求 1.网络请求成功 2.服务器返回的必须是JSON数据 3.AFN能够解析JSON数据

 http://blog.sina.com.cn/s/blog_68661bd80101r1xz.html

解析器的类型

 3. AFN 会默认解析 JSON 数据.

  AFN 中默认有三种类型的解析器.

 

  1> AFHTTPResponseSerializer :万能的解析器.什么数据都可以解析.会将服务器返回的二进制数据直接返回给你.

  2> AFJSONResponseSerializer :解析 JSON 数据,默认就是这种解析器.

  3> AFXMLParserResponseSerializer :XML 解析器.

 改变解析器类型

 manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

 增加解析器解析文件类型

 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript" ,@"text/plain",nil];

 

 4. AFN 使用注意:

  要根据服务器返回的数据类型,选择合适的解析器类型!

 

  5.利用 AFN 监测网络状态!

  AFNetworkReachabilityManager 只要网络状态改变,都可以监测到!

 下面是提供的实例:

   1. 实例化网络工具监测类.

 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

 

   2. 设置网络状态改变之后的操作.

  ReachabilityStatusChangeBlock:一旦网络状态改变之后,就会执行下面的 block.

 [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

 

 switch (status) {

 case AFNetworkReachabilityStatusUnknown:

 NSLog(@"未知的网络...");

 break;

 

 case AFNetworkReachabilityStatusNotReachable:

 NSLog(@"没有网络...");

 break;

 

 case AFNetworkReachabilityStatusReachableViaWWAN:

 NSLog(@"蜂窝移动网络...");

 break;

 

 case AFNetworkReachabilityStatusReachableViaWiFi:

 NSLog(@"WIFI网络...");

 break;

 

 default:

 break;

 }

 }];

 

 // 开启网络监测.

 [manager startMonitoring];

 

 block的循环引用

posted @ 2016-04-23 07:53  北极之光  阅读(701)  评论(0编辑  收藏  举报