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

來源:互聯網
上載者:User

標籤:

#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請求

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.