• 【iOS】AFNetworking


    AFNetworking是MAC/iOS为了简化网络操作设计的一套网络框架,专注与网络数据传输 ,以及网络中多线程的处理,只需要简单几步就可以完成网络请求任务。

    小说明

    1. ANF的特性:
      1. 登录传参数时 , 传递 字典 即可 .( 键名为参数名 , 键值为参数值 ).
      2. 自动到子线程中执行 , 执行完后返 回主线程 .
      3. 返回的结果 自动序列化 为 NSDictionary.
    2. 使用AFF注意:
      1. AFHTTPRequestOperationManager 封装了通过 HTTP 协议与 Web 应用程序进行通讯的常用方法 . ( 这个实例化的时候 不是单例 , 因为没有 shared 字 )
      2. 包括 创建请求 / 响应序列化 / 网络监控 / 数据安全 方法等都是 以 AF 开头的 .
    3. ANF的功能:
      1. GET / POST/PUT/DELETE/HEAD 请求 .
      2. JSON 数据解析 / Plist 数据解析 .( 不支持 XML 数据解析 )
      3. POST JSON .
      4. 上传 / 下载

    使用

    使用步骤

    1. 首先需要实例化一个请求管理器AFHTTPRequestOperationManager、AFHTTPSessionManager(iOS7以后建议使用).
    2. 设置请求的数据格式:默认是二进制.(不是可改)
      • AFHTTPRequestSerializer( 二进制 )
      • AFJSONRequestSerializer(JSON)
      • AFPropertyListRequestSerializer(Plist)
    3. 设置响应的数据格式:默认是JSON.(不是可改)
      • AFHTTPResponseSerializer( 二进制 )
      • AFJSONResponseSerializer(JSON)
      • AFPropertyListResponseSerializer(Plist)
      • AFXMLParserResponseSerializer(XML)
      • AFImageResponseSerializer(Image)
      • AFCompoundResponseSerializer( 组合的 )
    4. 如果响应者的MIMEType不正确,就要修改acceptableContentTypes.
    5. 调用方法,发送响应的请求(GET/POST…).

    代码示例

    这里使用根据城市名查询城市的api

    - (void) getData {
        AFHTTPSessionManager* manager = [AFHTTPSessionManager manager];
        // 字典传递问号以后的参数
        NSDictionary* dict = @{@"location":@"北京",@"key":@"b92646e0f4194731b50870798cfad1d0"};
        // 发送get请求
        /*
            第一个参数:请求路径(nsstring)
            第二个参数:字典(发送给服务器的参数 ,dict)
            第三个参数:headers 进度回调 一般填nil
            第四个参数:progess 进度回调 一般填nil
            第五个参数: success 成功回调
            task:请求任务
            responseObject:响应体信息(JSON--->OC对象)
            第六个参数:failure 失败回调
            error:错误信息
            响应头:task.response
           */
        [manager GET:@"https://geoapi.heweather.net/v2/city/lookup" parameters:dict headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            // 请求成功
            NSLog(@"%@", responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"error");
        }];
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    试运行:
    在这里插入图片描述

  • 相关阅读:
    中兴通讯5G交付能力出众,助力泰国True运营商实现海岛5G网络全覆盖
    echarts入门图表可视化(基本介绍+示例代码)
    S&P 2022论文泛读
    windows桌面运维----第六天
    vue draggable组件,拖拽元素时,获取元素上在data或setup中定义的数据
    表示学习(Representation learning)以及相关(半监督)论文阅读
    机器学习中的数学基础(一)
    智慧交通,迎来产业谍战丨产业特稿
    JVS规则引擎及智能BI又更新新功能啦!赶紧来试试
    网络编程基础与套接字
  • 原文地址:https://blog.csdn.net/m0_63852285/article/details/128195117