ios网络下载类的简单封装

jopen 9年前

以前写过一期网络下载基于AFNetWorking2.0下载类的封装,大致的思路很简单:主要是写一个网络业务处理的类,负责网络数据的下载和模型的转换,模型转换利用的是MJExtension,在viewcontroller中导入网络下载类即可。这是我写这么多网络数据请求,觉得最容易,代码量较少就可以实现任何网络数据的下载,当然这个类可以扩充,可以进行数据上传等等,因为每个人 的项目需求不同,这个每个人根据自己的实际情况处理即可。
这次重构的主要原因是因为AFNetWorking已经升级到3.0,原来基于NSURLConnection的已经废弃掉,改用NSURLSession,关于AFNetWorking具体的变化大家可以参照github上的描述,或者简书上 暮落晨曦 的大致翻译,链接如下:

github

https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-3.0-Migration-Guide#new-requirements-ios-7-mac-os-x-109-watchos-2-tvos-9--xcode-7

暮落晨曦中文翻译版本

http://www.jianshu.com/p/047463a7ce9b
有兴趣的同学可以去仔细研究。

下面将贴出我的主要代码

 //这个主要是导入HTTPRequestTool类    [HTTPRequestTool GET:DOWNLOADURL parameters:nil success:^(id responseObject) {            NSMutableArray *dataArr = [HTTPRequestTool ModelTransformationWithResponseObject:responseObject modelClass:[model class]];          [self.dataArray addObjectsFromArray:dataArr];            [tableView reloadData];      } failure:^(NSError *error) {          NSLog(@"%@",error);      }];
这是方法的具体实现  + (void)GET:(NSString *)URLString parameters:(id)parameters success:(void (^)(id))sucess failure:(void (^)(NSError *))failure  {      AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];      [manger GET:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {          //如果请求成功的话将responseObject保存在sucess Block中          if (sucess)          {              sucess(responseObject);          }        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {            if(failure)          {              failure(error);          }        }];    }

模型转换在前一期已经写过,大家可以具体去参考,再者我已经将代码的具体实现已经上传到github上,供有兴趣的同学参考。
https://github.com/markdashi/AFNetWorkingTool