兼容IPV6的AFNetworking网络封装

APPStore修改新规则,所有上架APP必须兼容IPV6.大概看了一下,其实很简单,大家平时用到的AFNetworking3.0即可兼容IPV6.今天和大家分享的就是兼容IPV6的AFNetworking二次封装.
1.首先,我们需要建立一个类,用来存放我们的网络封装,这样就可以避免每次网络请求都要重新写一遍的麻烦.
2.在.h中写一个加号方法(加号方法用类名直接可以调用)

+(void)getDataByString:(NSString *)urlString BodyDic:(NSDictionary *)bodyDic WithDataBlock:(void(^)(id data))dataBlock;

3.在.m具体实现

+(void)getDataByString:(NSString *)urlString BodyDic:(NSDictionary *)bodyDic WithDataBlock:(void (^)(id))dataBlock
{
    //1.字符串的转码
    urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:urlString]];
    //2.创建管理者对象(session)
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //3.设置允许请求的类别
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/json",@"application/json",@"text/javascript",@"text/html", @"application/javascript", @"text/js", nil];
    //4.开始请求
    if (!bodyDic)
    {
        //如果bodyDic为空就执行get请求
        [manager GET:urlString parameters:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nonnull responseObject) {
            dataBlock(responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"GET请求失败");
        }];
    }
    else
    {
        [manager POST:urlString parameters:bodyDic success:^(NSURLSessionDataTask * _Nonnull task, id  _Nonnull responseObject) {
            dataBlock(responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"POST请求失败");
        }];
    }
}

4.这样对于AFNetworking的二次封装就写好,如果需要网络请求的时候,直接调用即可

[HTTPMethod getDataByString:@"网络请求的地址" BodyDic:nil WithDataBlock:^(id data) {
        NSLog(@"%@", data);
    }];

这里给大家解释一下,BodyDic如果传值表示是POST请求,不传值表示GET请求.返回值data就是接口返回的数据,并且id类型.这样大家就可以处理返回的数据了.(HTTPMethod是我自己定义的类名,大家随意~~~)

你可能感兴趣的:(兼容IPV6的AFNetworking网络封装)