AFN:网络请求
AFN主要使用在2个场景中
(1):发送网络请求
(2):实时监测网络状态
AFNetworking 2.0 和3.0 的区别
- AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持。如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本。
- AFNetworking 3.0现已完全基于NSURLSession的API,这降低了维护的负担,同时支持苹果增强关于NSURLSession提供的任何额外功能。
- 可以结合MBProgressHUD,网络请求时间短的话,就可以不要显示HUD,提高用户体验,另外HUD也可以懒加载,全程只需要一个HUD即可。HUD内部有创建HUD对象时涉及到请求时间的类方法,在这个方法中如果请求时间小于某个值,就返回nil,即不显示HUD。此外AFN还有联网检测功能,每次请求网络之前先检测有没有网络,没有网络则提示用户(涉及到AFN和HUD的组合封装)
- GET请求和POST请求的区别:
GET请求:
请求参数会在浏览器的地址栏中显示,所以不安全;
请求参数长度限制长度在1K之内;
GET请求没有请求体,无法通过request.setCharacterEncoding()来设置参数的编码;
POST请求:
请求参数不会显示浏览器的地址栏,相对安全;
请求参数长度没有限制;
- 实时检测网络状态改变的类
AFNetworkReachabilityManager 实时检测网络状态改变的类
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
// 设置网络状态改变之后的操作
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
// status :当前的网络状态.
// AFNetworkReachabilityStatusUnknown
// AFNetworkReachabilityStatusNotReachable
// AFNetworkReachabilityStatusReachableViaWWAN
// AFNetworkReachabilityStatusReachableViaWiFi
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知的网络状态");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"没有网络");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"蜂窝移动网络");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WIFI网络");
break;
default:
break;
}
}];
// 开始检测网络状态
[manager startMonitoring];
网友评论