ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【iOS】利用AFNetworking更方便实现网络请求 [打印本页]

作者: 用多少眼泪才能让你相信    时间: 2024-10-25 18:36
标题: 【iOS】利用AFNetworking更方便实现网络请求
目录

前言
如何利用AFNetworing实现网络请求
利用单例
举行网络申请
结语


前言

OC中原生的网络请求流程非常贫困,通常是以下游程:
笔者之前在天气预报项目中利用时,也只是知道了利用的方法依葫芦画瓢,并且申请流程非常繁琐,现在假如利用AFNetworking第三方库来实现网络请求,就会变得简便很多。
如何利用AFNetworing实现网络请求

利用AFNetworking实现网络请求大致流程如下:
下面以GET为例演示一下具体流程
利用单例

首先,我们在实现网络请求时,应利用单例来统一实现,这样做的好处是,可以制止在差别的页面反复创建对象申请网络请求,同时也更有利于维护
以是实现网络请求的第一步,便是创建一个单例,关于创建单例的知识,笔者之前已有博客详细讲述,这里就不多赘述了,这里附上链接:
举行网络申请

我们在举行网络请求时,将JSON数据直接转换成Model,方便我们实现MVC的结构
  1. //在.h文件中,定义给block命名:typedef void(^successBlock)(testModel* testModel);
  2. - (void) NetWorkWithData {
  3.     AFHTTPSessionManager* manger = [AFHTTPSessionManager manager];
  4.     NSString* str = @"https://news-at.zhihu.com/api/4/version/ios/2.3.0";
  5.     [manger GET:str parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
  6.         testModel* model = [testModel yy_modelWithJSON:responseObject];
  7.     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  8.         NSLog(@"error");
  9.     }];
  10. }
复制代码
这样就实现了网络请求并将数据转换成了Model,而原生的请求流程如下:
  1. void dataload {
  2.     NSString* urlString = @"https://devapi.qweather.com/v7/weather/3d?location=101010100&key=34e1f7a3ef5544d393fcafaea08f0f1b";
  3.     NSURL* url = [NSURL URLWithString:urlString];
  4.     NSURLRequest *request = [NSURLRequest requestWithURL:url];
  5.     NSURLSession *session = [NSURLSession sharedSession];
  6.     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
  7.         if (!error && data) {
  8.             NSError *jsonError;
  9.             NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
  10.             if (!jsonError && [jsonDict isKindOfClass:[NSDictionary class]]) {
  11.                 AModel *model = [AModel yy_modelWithDictionary:jsonDict];
  12.                 NSLog(@"%@",model);
  13.             }
  14.         } else {
  15.             NSLog(@"Error: %@", error);
  16.         }
  17.     }];
  18.     [task resume];
  19. }
复制代码
显而易见,利用AFNetworking大大减小了代码量,更便于阅读和编写。
这里有关GET方法的几个参数如下:
   URL 参数
   
   parameters 参数
   
   progress 参数
   
   headers 参数
   
   success 参数
   
   failure 参数
   
  结语

 在研究spotify时,发现AFNetworking在处置惩罚一些需要涉及到请求头和请求体的网络请求会非常方便,与headers和parameters参数有关,这些知识之后会再举行完善。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4