当前位置: 首页 > news >正文

【iOS】AFNetworking初步了解及使用

文章目录

  • 前言
  • 网络请求
    • 原生请求
    • 用AFNetworking库进行网络请求
      • 代码示例
      • 运行结果
  • 总结

前言

之前我们在暑假的天气预报项目中简单使用过苹果原生NSURLSession有关网络请求的内容,但是只是最基础的使用且用起来比较麻烦,于是学习了使用AFNetworking库(即一个第三方库,需要使用cocoapods进行导入)进行网络请求,在下面予以总结

网络请求

原生请求

在iOS原生的系统中,网络请求一般要进行以下五步:

  1. 创建请求地址
  2. 创建请求类
  3. 创建对话
  4. 创建任务
  5. 启动任务

下面是之前在天气预报中部分的网络请求代码

//创建请求地址,构建并准备好目标URL
NSString *urlString = [NSString stringWithFormat:@"https://api.weatherapi.com/v1/forecast.json?key=3557d02150d248e6b0735224252907&q=%@&days=7", city];urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]NSURL *url = [NSURL URLWithString:urlString];
//创建一个NSURLRequest的请求对象NSURLRequest *request = [NSURLRequest requestWithURL:url];
//创建管理网络任务的会话容器NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];//创建网络任务并准备数据容器
self.responseData = [[NSMutableData alloc] init];NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request];
//启动任务[dataTask resume];

用AFNetworking库进行网络请求

在使用这个第三方库时,也是首先要用的cocoapods进行导入,并在代码中写上头文件#import <AFNetworking/AFNetworking.h>进行导入,主要步骤如下

  1. 创建管理器
  2. 设置请求的参数
  3. 发起get请求
  4. 据请求结果判断处理请求成功与失败的数据
  5. 更新数据之类的操作

代码示例

#import "ViewController.h"
#import <AFNetworking/AFNetworking.h>@interface ViewController ()
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];[self LoadWeatherData];
}- (void)LoadWeatherData {// 创建网络管理器AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];// 设置请求参数NSDictionary *params = @{@"key": @"3557d02150d248e6b0735224252907",@"q": @"西安",@"days": @"1"};// 发起GET请求[manager GET:@"https://api.weatherapi.com/v1/forecast.json"parameters:paramsheaders:nilprogress:nilsuccess:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {// 请求成功 - 打印数据NSLog(@"请求成功!");NSLog(@"完整响应数据: %@", responseObject);// 提取一些具体信息打印if ([responseObject isKindOfClass:[NSDictionary class]]) {NSDictionary *location = responseObject[@"location"];NSDictionary *current = responseObject[@"current"];NSLog(@"城市: %@", location[@"name"]);NSLog(@"温度: %.1f°C", [current[@"temp_c"] floatValue]);NSLog(@"天气: %@", current[@"condition"][@"text"]);}} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {// 请求失败 - 打印错误NSLog(@"请求失败: %@", error.localizedDescription);}];
}
@end

运行结果

请添加图片描述

请添加图片描述

GET方法请求数据几个参数的作用:

  1. GET:是存放我们的URL,也就是我们的网络请求的地址。
  2. parameters:参数则是我们要发送的请求的查询数据,在get请求中我们一般放在URL中间,这里注意下在POST请求,我们需要使用一个字典来进行一个请求。
  3. header(HTTP请求头):在大部分请求中我们是不需要的,但是在部分要求比较严格的API中,可能就需要运用到这个参数
  4. progress:是一个可以选择的块,一般用于大文件的下载中,success则是请求成功后回调块,failure则是请求失败后的回调块

总结

这里只是简单介绍了AFNetworking的用法,后面还会讲出与YYModel和单例模式一起使用的更多用法

http://www.dtcms.com/a/394119.html

相关文章:

  • JVM实战-G1参数调优
  • 超简单的视频分割脚本
  • 基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)
  • 在 Windows 系统上安装官方 Codex CLI 教程
  • Redis 配置与优化全攻略
  • 二分查找左右边界写法
  • Oracle体系结构-Large Pool详解
  • Elasticsearch面试精讲 Day 19:磁盘IO与存储优化
  • 【AI智能体】Dify 搭建数据分析应用实战操作详解
  • Nginx localtion / 、/a、/a/ 的区别
  • 【C++】string的使用与模拟实现
  • 新手向 算法 希尔排序-yang
  • 如何用RAG增强的动态能力与大模型结合打造企业AI产品?
  • 黑马头条_SpringCloud项目阶段五:openFeign服务接入以及接入腾讯云内容安全服务实现文章提交违规信息自动审核
  • Spring、SpringBoot框架核心流程详解
  • 195. Java 异常 - finally 块:Java 中的“兜底侠”
  • C语言底层学习(2.指针与数组的关系与应用)(超详细)
  • 008 Rust注释
  • ubuntu防火墙开放端口
  • ​MySQL 8.0.29 RPM 安装教程(CentOS 7 / RHEL 7 详细步骤)​附安装包
  • AIPPT:AI一键生成高质量PPT
  • [已更新]2025华为杯E题数学建模研赛E题研究生数学建模思路代码文章成品:高速列车轴承智能故障诊断问题
  • 从零到一:Vue3 + Spring Boot + MySQL 全栈项目部署到阿里云服务器完整教程
  • 微服务基础2-网关路由
  • ubuntu创建新用户
  • 黑豹X2(Panther-x2)armbian 驱动NPU/VPU的驱动下载安装
  • 50.Mysql主从复制与读写分离
  • 软件设计师,经典计算题
  • Python的bz2库讲解
  • 抖音2025创作者大会:优质内容播放时长增220%,推出四大计划