博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios开发网络学习AFN框架的使用一:get和post请求
阅读量:4326 次
发布时间:2019-06-06

本文共 4014 字,大约阅读时间需要 13 分钟。

#import "ViewController.h"#import "AFNetworking.h"@interface ViewController ()@end@implementation ViewController-(void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{ [self post];}-(void)get{ //1.创建会话管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; //http://120.25.226.186:32812/login?username=123&pwd=122&type=JSON // NSDictionary *paramDict = @{ @"username":@"520it", @"pwd":@"520it", @"type":@"JSON" }; //2.发送GET请求 /* 第一个参数:请求路径(不包含参数).NSString 第二个参数:字典(发送给服务器的数据~参数) 第三个参数:progress 进度回调 第四个参数:success 成功回调 task:请求任务 responseObject:响应体信息(JSON--->OC对象) 第五个参数:failure 失败回调 error:错误信息 响应头:task.response */ [manager GET:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"%@---%@",[responseObject class],responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"请求失败--%@",error); }];}-(void)post{ //1.创建会话管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; NSDictionary *paramDict = @{ @"username":@"520it", @"pwd":@"520", @"type":@"JSON" }; //2.发送GET请求 /* 第一个参数:请求路径(不包含参数).NSString 第二个参数:字典(发送给服务器的数据~参数) 第三个参数:progress 进度回调 第四个参数:success 成功回调 task:请求任务 responseObject:响应体信息(JSON--->OC对象) 第五个参数:failure 失败回调 error:错误信息 响应头:task.response */ [manager POST:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"%@---%@",[responseObject class],responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"请求失败--%@",error); }];}@end

 

```objc

AFN结构体

    - NSURLConnection

        + AFURLConnectionOperation(已经被废弃)

        + AFHTTPRequestOperation(已经被废弃)

        + AFHTTPRequestOperationManager(封装了常用的 HTTP 方法)(已经被废弃)

            * 属性

                * baseURL :AFN建议开发者针对 AFHTTPRequestOperationManager 自定义个一个单例子类,设置 baseURL, 所有的网络访问,都只使用相对路径即可

                * requestSerializer :请求数据格式/默认是二进制的 HTTP

                * responseSerializer :响应的数据格式/默认是 JSON 格式

                * operationQueue

                * reachabilityManager :网络连接管理器

            * 方法

                * manager :方便创建管理器的类方法

                * HTTPRequestOperationWithRequest :在访问服务器时,如果要告诉服务器一些附加信息,都需要在 Request 中设置

                * GET

                * POST

 

    - NSURLSession

        + AFURLSessionManager

        + AFHTTPSessionManager(封装了常用的 HTTP 方法)

            * GET

            * POST

            * UIKit + AFNetworking 分类

            * NSProgress :利用KVO

 

    - 半自动的序列化&反序列化的功能

        + AFURLRequestSerialization :请求的数据格式/默认是二进制的

        + AFURLResponseSerialization :响应的数据格式/默认是JSON格式

    - 附加功能

        + 安全策略

            * HTTPS

            * AFSecurityPolicy

        + 网络检测

            * 对苹果的网络连接检测做了一个封装

            * AFNetworkReachabilityManager

 

建议:

可以学习下AFN对 UIKit 做了一些分类, 对自己能力提升是非常有帮助的

```

- 0.2 AFN的基本使用

 

(1)发送POST请求的方式

```objc

-(void)post

{

    //1.创建会话管理者

    //AFHTTPSessionManager内部是基于NSURLSession实现的

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

 

    //2.创建参数

    NSDictionary *dict = @{

                           @"username":@"520it",

                           @"pwd":@"520it",

                           };

 

    //3.发送POST请求

    /*

     http://120.25.226.186:32812/login?username=ee&pwd=ee&type=JSON

     第一个参数:NSString类型的请求路径,AFN内部会自动将该路径包装为一个url并创建请求对象

     第二个参数:请求参数,以字典的方式传递,AFN内部会判断当前是POST请求还是GET请求,以选择直接拼接还是转换为NSData放到请求体中传递

     第三个参数:进度回调 此处为nil

     第四个参数:请求成功之后回调Block

     第五个参数:请求失败回调Block

     */

    [manager POST:@"http://120.25.226.186:32812/login" parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

 

        //注意:responseObject:请求成功返回的响应结果(AFN内部已经把响应体转换为OC对象,通常是字典或数组)

        NSLog(@"请求成功---%@",responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        NSLog(@"请求失败---%@",error);

    }];

}

```

 

转载于:https://www.cnblogs.com/cqb-learner/p/5866724.html

你可能感兴趣的文章
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>
crontab导致磁盘空间满问题的解决
查看>>
java基础 第十一章(多态、抽象类、接口、包装类、String)
查看>>
Hadoop 服务器配置的副本数量 管不了客户端
查看>>
欧建新之死
查看>>
自定义滚动条
查看>>
APP开发手记01(app与web的困惑)
查看>>
笛卡尔遗传规划Cartesian Genetic Programming (CGP)简单理解(1)
查看>>
mysql 日期时间运算函数(转)
查看>>
初识前端作业1
查看>>
ffmpeg格式转换命令
查看>>
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
vs code调试console程序报错--preLaunchTask“build”
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>
手机通话记录统计分析
查看>>