iOS網絡--發送get,post請求

一、發送get請求

       1. 準備URL

NSString  * urlStr = @"http://127.0.0.1/hello.php?userName=jack&userPwd=123";

       2.通過URL來get數據

 NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]];

      3.對獲取的數據進行解析

    NSArray * array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

這裏使用了[NSJSONSerialization JSONObjectWithData: options]這個方法,我們這裏通過後臺返回的是一個json數組,數組中是一個對象(拿js的話來說),通過這個方法可以將後臺返回的json數組數據的二進制格式轉換爲json數組的格式。在iOS中體現出來就是數組中是一個個的字典。

接下來就是根據自己的需求將字典轉換爲模型。

二、發送post請求

       首先需要說明的是,iOS中發送post請求的過程比較繁瑣哈

      1.準備URL

NSString * urlString = @"http://127.0.0.1/hello.php";
NSURL * url = [NSURL URLWithString:urlString];

     2.創建一個可以修改的請求以發送

     首先這裏解釋一下爲什麼創建的是可變的請求,原因是我們會自定義請求的content-type之類的。

//1.創建一個可以修改的請求
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
//2.設置請求的方式
request.HTTPMethod = @"POST";
//設置請求體
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//創建json數據
NSDictionary * jsonDic = @{@"name":@"jack",@"pwd":@"123"};
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];
//設置請求體body
request.HTTPBody = jsonData;

創建了一個可修改的請求之後,首先設置請求的方式爲post,大小寫不敏感,然後設置這個請求的請求頭:發送給服務器數據的類型,這裏是json格式的,按道理說這裏還需要設置一下數據編碼的格式... 然後就創建我們所要發送到服務器端的json數據:首先是創建一個字典,然後將字典序列化爲json數據,然後用請求體來包裹我們傳輸的json數據。

     3.給服務器發送請求

[NSURLConnection  sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
    }];

通過[NSURLConnection  sendAsynchronousRequest:  queue:completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { }] 這個方法來發送post請求,queue表示handler這個block在哪一個線程中執行,我們是在主線程中執行的,如果這個block中有對UI的操作,則應該在主線程中進行。

 

下一節我們將學習獲取服務器上的圖片的幾種方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章