兼容IPV6的AFNetworking网络封装

作者: 和影子玩拳击 | 来源:发表于2016-09-06 16:11 被阅读1570次

    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是我自己定义的类名,大家随意~~~)

    相关文章

      网友评论

      • timeforasong:需要取消所有的网络请求怎么封装在里面?
      • 9229d79ec840:其实:AFHTTPSessionManager可以写成单例的,不过你这个合二为一的想法真不错

      本文标题:兼容IPV6的AFNetworking网络封装

      本文链接:https://www.haomeiwen.com/subject/ixvdettx.html