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