概述
雖然iOS中提供了自帶的NSURLSession等一系列進行網絡操作的庫,但是仍然不夠簡單,於是就有了各種第三方網絡庫,其中較火的AFNetworking。
主要是AFNetworking的基本用法,展示了一個基本的get請求。
關於如何使用CocoaPods進行第三方庫的引入,請參看前面的文章。
注意
iOS9之後想要使用http就要進行相應配置
返回數據頭重content_type由於可能是text/html,但是AFNetworking中默認沒有配置text/html,造成錯誤出現。解決方法在代碼中已經給出,仔細看註釋。
示例
配置http可以使用
iOS 9.0由於強制使用https , 所以之前使用的 http的連接 的應用如果不做特殊配製就都不可以運行了,爲了解決這個問題要在工程的info.plit中添加如下配製。
示例代碼
ViewController.m
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[self AFNetMonitor];
[self AFNetGetData];
}
//一個簡單的get請求
-(void)AFNetGetData{
//創建會話管理器對象
AFHTTPSessionManager* session = [AFHTTPSessionManager manager];
//將text/html類型添加入返回數據類型列表中(默認AFNetworking中沒有,但是我們的服務器端很可能給的即使是json,但是content_type還是text/html)
session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html",@"text/json", @"text/javascript", nil];
//請求url
NSString* path = @"你的url"; //管理器對象發起get請求
//p1:url
//p2:get方法中參數可以放這裏
//p3:請求頭數據
//p4:下載數據的進度條控件
//p5:成功之後回調的函數塊:pp1:回話任務 pp2:返回的數據
//p6:失敗之後回調函數塊:pp1:回話任務 pp2:錯誤對象
[session GET:path parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if([responseObject isKindOfClass:[NSDictionary class]]){
NSLog(@"result==%@",responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失敗了error==%@",error);
}];
}
//獲取網絡狀態
-(void) AFNetMonitor{
//啓動網絡狀態監聽
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
//監聽網絡狀態
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"網絡不可用");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi網絡可用");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"移動網絡可用");
break;
default:
break;
}
}];
}
@end