iOS入門-40AFNetworking

概述

雖然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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章