AFNetworking内部会自动反序列化,默认是解析JSON
-(void)json
{
//1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//2.get请求
NSDictionary *dict = @{
@"username":@"afn",
@"pwd":@"afn",
@"type":@"JSON",
};
//AFN内部会自动进行反序列化处理(JSON)
[manager GET:@"http://120.25.226.186:32812/login" parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"成功--%@---%@",responseObject,[responseObject class]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失败-=-%@",error);
}];
}
服务器返回的是XML的数据格式时的解析
-(void)xml
{
//1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//告诉AFN以XML的方式来解析数据
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
//2.get请求
NSDictionary *dict = @{
@"type":@"XML",
};
//AFN内部会自动进行反序列化处理(JSON)
[manager GET:@"http://120.25.226.186:32812/video" parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSXMLParser *parser) {
// NSLog(@"成功--%@---%@",responseObject,[responseObject class]);
//设置代理
parser.delegate = self;
//开始解析
[parser parse];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失败-=-%@",error);
}];
}
解析xml数据的代理方法
pragma mark ----------------------
#pragma mark NSXMLParserDelegate
//elementName:返回文件名;attributeDict:文件属性
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict
{
NSLog(@"%@--%@",elementName,attributeDict);
}
HTML网页的解析
-(void)httphtml
{
//1.创建会话管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//设置不解析,一服务器返回的格式接收
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//2.get请求
//AFN内部会自动进行反序列化处理(JSON)
[manager GET:@"http://www.baidu.com" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"--%@---%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding],[responseObject class]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失败-=-%@",error);
}];
}
AFN网络监测
-(void)afn
{
//1.创建网络监测管理者
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
//2.检测
/*
AFNetworkReachabilityStatusUnknown = -1, 未知
AFNetworkReachabilityStatusNotReachable = 0, 没有网络
AFNetworkReachabilityStatusReachableViaWWAN = 1, 蜂窝网络3G|4G
AFNetworkReachabilityStatusReachableViaWiFi = 2, WIFI
*/
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"蜂窝网络3G|4G");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"没有网络");
break;
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知");
break;
default:
break;
}
}];
//3.开始监测
[manager startMonitoring];
}
系统自带的网络监测
要导入Reachability头文件
#import "ViewController.h"
#import "AFNetworking.h"
#import "Reachability.h"
@interface ViewController ()<NSXMLParserDelegate>
/** Reachability*/
@property (nonatomic ,strong)Reachability *r;
@end
@implementation ViewController
-(void)viewDidLoad
{
[super viewDidLoad];
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChange) name:kReachabilityChangedNotification object:nil];
self.r = [Reachability reachabilityForInternetConnection];
[self.r startNotifier];
}
-(void)reachabilityChange
{
/*
NotReachable = 0, 没有网络
ReachableViaWiFi, WIFI
ReachableViaWWAN 蜂窝网络
*/
//首先获得一个Reachability 有状态的
if([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN)
{
NSLog(@"蜂窝网络");
return;
}
if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi) {
NSLog(@"WIFI");
return ;
}
NSLog(@"没有网络");
}
注册通知要移除监听对象并且Reachability要调用stopNotifier方法
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self.r stopNotifier];
}