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 *)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

你可能感兴趣的:(iOS)