歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

NSURLSession的GET和POST請求基本使用

簡介:因為在iOS9.0之後,以前使用的NSURLConnection過期,蘋果推薦使用NSURLSession來替換NSURLConnection完成網路請求相關操作。

所以在此介紹如何使用NSURLSession來發送GET請求和POST請求。

後續又將其封裝起來,方便以後可以通過一個方法實現所有過程!! http://www.linuxidc.com/Linux/2016-04/129798.htm

 使用步驟:

      1)確定請求路徑

    2)創建請求對象(POST請求需要修改請求方法和設置請求體)

    3)創建會話對象(NSURLSession)

    4)根據會話對象創建請求任務(NSURLSessionDataTask)

    5)執行Task

    6)當得到服務器返回的響應後,解析數據

GET請求代碼:

 
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    /* 登錄接口說明:http://127.0.0.1/login/login.php  是一個登陸接口,若傳入的參數正確
     則返回{"userId":1,"userName":"zhangsan"}的JSON數據
     */
    
    //GET請求將參數拼接在 url 後面
    
    //網絡接口 和 參數 以 ? 分隔. 參數和參數之間以 & 符號分隔.注意刪除最後一個 & 符號.
    //如:http://127.0.0.1/login.php?username=zhangsan&password=zhang
    
    
    // NSUrlSession 的使用步驟:
    
    // 1.實例化網絡會話.
    NSURLSession *session = [NSURLSession sharedSession];
    
    // 2.根據網絡會話,實例化網絡任務.
    // 網絡任務: 三種: 普通/上傳/下載
    
    // NSURLSessionDataTask :普通網絡任務.
    // 如果是GET 請求,可以直接根據 url 實例化網絡任務.
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php?username=zhangsan&password=zhang"];
    /*
     第一個參數:請求路徑:內部會自動將路徑包裝成請求對象
     第二個參數:completionHandler回調(請求完成【成功|失敗】的回調)
     data:響應體信息(期望的數據)
     response:響應頭信息,主要是對服務器端的描述
     error:錯誤信息,如果請求失敗,則error有值
     */
    NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        // 默認是子線程.
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
        
    }];
    
    // 3.開啟網絡任務.
    [task resume];
    
}
GET請求代碼

POST請求代碼:

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    /* 登錄接口說明:http://127.0.0.1/login/login.php  是一個登陸接口,若傳入的參數正確
     則返回{"userId":1,"userName":"zhangsan"}的JSON數據
     */
    
    //注意:POST請求將參數添加在請求體中
    
    
    // NSUrlSession 的使用步驟:
    
    // 1.實例化網絡會話.
    NSURLSession *session = [NSURLSession sharedSession];
    
    // 2.根據網絡會話,實例化網絡任務.
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php"];
    
    //3.創建可變請求對象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //4.設置請求體
    request.HTTPBody = [@"username=zhangsan&password=zhang" dataUsingEncoding:NSUTF8StringEncoding];
    
    //5..設置請求方法:
    request.HTTPMethod = @"POST";
    
    /*
     第一個參數:請求對象
     第二個參數:completionHandler回調(請求完成【成功|失敗】的回調)
     data:響應體信息(期望的數據)
     response:響應頭信息,主要是對服務器端的描述
     error:錯誤信息,如果請求失敗,則error有值
     */
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        // 默認是子線程.
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
        
    }];
    
    // 3.開啟網絡任務.
    [task resume];
    
}
POST請求代碼

代碼執行結果:

Copyright © Linux教程網 All Rights Reserved