ios開發網絡學習AFN框架的使用一:get和post請求


#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);

    }];

}

```

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM