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是我自己定義的類名,大家隨意~~~)