標籤:
#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":@"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);
}];
}
```
ios開發網路學習AFN架構的使用一:get和post請求