一、發送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的操作,則應該在主線程中進行。
下一節我們將學習獲取服務器上的圖片的幾種方式。