「OC」AFNetworking的简单使用

「OC」AFNetworking的简单使用

前言

在我们进行网络申请的时候,直接使用OC之中自带的NSURLNSURLRequestNSURLSession进行相关操作,还需要实现Task回调、调用resume。那对我们进行开发来说还是相对比较繁琐的,为了简化我们的网络请求,我们其实可以直接使用AFNetworking这个第三方库进行网络请求的操作(下文简称AFN)。

介绍

我们先来对AFNetworking的核心组件进行介绍

AFHTTPSessionManager:基于 NSURLSession 的管理类,用于发送网络请求和处理响应。AFHTTPSessionManager 是最常用的类,用于处理 HTTP 请求。

AFURLSessionManager:基于 NSURLSession,用于管理下载、上传等任务。

AFNetworkReachabilityManager:用于监控网络状态的变化。

处理响应格式

AFNetworking 可以自动解析响应的数据格式,常用的解析格式有 JSON、XML、和图片。

  • JSON 响应: 默认情况下,AFHTTPSessionManager 会将服务器返回的 JSON 自动解析为字典或数组。

    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    
  • XML 响应: 如果你的服务器返回 XML,你可以使用 AFXMLParserResponseSerializer

    manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
    
  • 图片下载: AFNetworking 也支持图片下载,并且可以设置下载的图片缓存。

    manager.responseSerializer = [AFImageResponseSerializer serializer];
    

进行简单的GET操作

我们以天气预报的信息申请为例子,如果使用OC之中原生的网络请求,代码大致如下

// 用 NSString 创建 URL
NSString *urlString = @"https://devapi.qweather.com/v7/weather/now?location=101110101&key=487fcdf6fdc9401da0ac4c4df535f43d";
NSURL *url = [NSURL URLWithString:urlString];

// 创建 URLSession 对象
NSURLSession *session = [NSURLSession sharedSession];

// 创建 URLRequest 对其进行相关请求,这里使用 GET 方法
NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 根据会话创建任务
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
   
   
  	//用block实现回调,处理接受的参数
    if (error) {
   
   
        NSLog(@"错误: %@", error);
        return;
    }

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
    if (httpResponse.statusCode >= 200 && httpResponse.statusCode < 300) {
   
   
        NSError *jsonError;
        NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
        if (jsonError) {
   
   
            NSLog(@"解析失败: %@", jsonError);
        } else {
   
   
            NSLog(@"数据如下: %@", json);
            // 在这里处理返回的数据
        }
    } else {
   
   
        NSLog(@"非法响应: %ld", (long)httpResponse.statusCode);
    }
}];

// 启动任务
[task resume];

如果我们引入AFNetworking库,那么代码就会被简化为以下内容

// 导入 AFNetworking
#import <AFNetworking/AFNetworking.h>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值