#import "ViewController.h"
#import "AFNetworking.h" @interface ViewController () @end @implementation ViewController -(void)touchesBegan:(NSSet<UITouch *> *)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":@"",
@"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);

}];

}

```

最新文章

  1. 51nod 算法马拉松18 B 非010串 矩阵快速幂
  2. HTML中head头结构
  3. NYOJ题目65另一种阶乘问题
  4. json日期格式问题的办法
  5. window下从python开始安装科学计算环境
  6. 插件兼容CommonJS, AMD, CMD 和 原生 JS
  7. 修改maven一更新jre就变成1.5版本
  8. AFNetworking 原作者都无法解决的问题: 如何使用ip直接访问https网站?
  9. 为公司无线网络启用802.1x协议
  10. SVN svnserve.conf: Option expected 的解决方法 以及 Authorization failed 的解决方法
  11. 知识准备-JOIN/EXISTS
  12. snowflake算法(java版)
  13. UESTC_贪吃蛇 CDOJ 709
  14. c# winfrom DataGridView使行高不可改变,使列头高度不可改变,
  15. SQLite存储区的日志模式
  16. final link failed: Nonrepresentable section on output
  17. @无痕客 https://www.cnblogs.com/wuhenke/archive/2012/12/24/2830530.html 通篇引用
  18. LVN与其在Linux上的实现
  19. Codeforces Round #516 (Div. 2) (A~E)
  20. CF983B XOR-pyramid

热门文章

  1. apache activemq Failed to bind to server socket 61616
  2. Win8.1恢复这台电脑里的6个文件夹
  3. angular 子组件与父组件通讯
  4. vue中类名和组件经过刷新不对应的解决办法
  5. Spring MVC modelandview
  6. 1. 初识ZooKeeper。
  7. 常用加密算法的Java实现(一)
  8. 多校连萌15-8-12#A
  9. amazeui学习笔记--css(基本样式3)--文字排版Typography
  10. !!在JS中代表什么