JSON
#import "ViewController.h"
#import "YYHttpTool.h"http:// 網(wǎng)絡(luò)請求工具類,基于AFN的封裝
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self JSON];
}
//AFN內(nèi)部默認(rèn)已經(jīng)做了反序列化處理
-(void)JSON
{
//1.創(chuàng)建會話管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//參數(shù)單獨(dú)寫出來
NSDictionary *dictM = @{@"type":@"JSON"};
//2.發(fā)請求
[manager GET:@"http://120.25.226.186:32812/video" parameters:dictM progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//通過打印下面的代碼可知,內(nèi)部已經(jīng)把JOSN數(shù)據(jù)轉(zhuǎn)換層OC對象(字典)。即用responseObject表示出來,也就是服務(wù)器返回給訪問者的數(shù)據(jù)類型是字典類型的數(shù)據(jù)
NSLog(@"成功--%@",responseObject);
NSLog(@"成功--%@",[responseObject class]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失敗--%@",error);
}];
}
@end
截圖:

XML
#import "ViewController.h"
#import "YYHttpTool.h"http:// 網(wǎng)絡(luò)請求工具類,基于AFN的封裝
@interface ViewController ()<NSXMLParserDelegate>
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self XML];
}
-(void)XML
{
//1.創(chuàng)建會話管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//修改對響應(yīng)體信息的解析方式(默認(rèn)是用JSON解析數(shù)據(jù),即1),修改為用XML解析數(shù)據(jù)(即2).如果注釋2,則打印NSData數(shù)據(jù)
//manager.responseSerializer = [AFJSONRequestSerializer serializer];//1
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];//2
NSDictionary *dictM = @{@"type":@"XML"};
//2.發(fā)請求
[manager GET:@"http://120.25.226.186:32812/video" parameters:dictM progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//NSLog(@"成功--%@",responseObject);
NSXMLParser *parser = (NSXMLParser *)responseObject;
//設(shè)置代理
parser.delegate = self;
//開始解析
[parser parse];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失敗--%@",error);
}];
}
#pragma mark NSXMLParserDelegate
//開始解析某個(gè)元素的時(shí)候回調(diào)用,并且這個(gè)方法會被調(diào)用多次
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict
{
NSLog(@"%@--%@",elementName,attributeDict);
}
@end
截圖:

31-20.gif
訪問圖片
#import "ViewController.h"
#import "YYHttpTool.h"http:// 網(wǎng)絡(luò)請求工具類,基于AFN的封裝
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self Picture];
}
//發(fā)送訪問圖片的請求
-(void)Picture
{
//1.創(chuàng)建會話管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//修改數(shù)據(jù)的解析方式
//3種解析方式:JSON & XML &http(不做任何處理)
manager.responseSerializer = [AFHTTPResponseSerializer serializer];//用XML解析數(shù)據(jù)
//2.發(fā)請求
[manager GET:@"http://120.25.226.186:32812/resources/images/minion_02.png" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"成功--%@",[responseObject class]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失敗--%@",error);
}];
}
@end
打印結(jié)果
2016-08-14 18:27:23.398 AFN之訪問圖片 [15180:1110061] 成功--_NSInlineData
訪問網(wǎng)頁
#import "ViewController.h"
#import "YYHttpTool.h"http:// 網(wǎng)絡(luò)請求工具類,基于AFN的封裝
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self Website];
}
//(發(fā)送訪問網(wǎng)頁的請求)
-(void)Website
{
//1.創(chuàng)建會話管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//內(nèi)容類型為text/html
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//2.發(fā)請求(發(fā)送登錄網(wǎng)頁的請求)
[manager GET:@"http://www.baidu.com" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//內(nèi)部已經(jīng)把JOSN數(shù)據(jù)轉(zhuǎn)換層OC對象(字典)
NSLog(@"成功--%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);//把二進(jìn)制數(shù)據(jù)responseObject轉(zhuǎn)換成字符串NSString
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失敗--%@",error);
}];
}
@end
截圖:

31-21.gif
網(wǎng)絡(luò)狀態(tài)
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)viewDidLoad
{
[super viewDidLoad];
[self NetworkStatus];
}
-(void)NetworkStatus{
//1.通過網(wǎng)絡(luò)監(jiān)測管理者監(jiān)聽狀態(tài)的改變
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
/*
AFNetworkReachabilityStatusUnknown = -1, 未知
AFNetworkReachabilityStatusNotReachable = 0, 沒有網(wǎng)絡(luò)
AFNetworkReachabilityStatusReachableViaWWAN = 1, 3G|4G
AFNetworkReachabilityStatusReachableViaWiFi = 2, WIFI
*/
switch (status) {
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WIFI");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"3G&4G");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"沒有網(wǎng)絡(luò)");
break;
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知");
break;
default:
break;
}
}];
//2.開始監(jiān)聽
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
}
@end
打印結(jié)果