URL:就是資源的地址幻工、位置狸膏,每一個(gè)互聯(lián)網(wǎng)資源都有一個(gè)唯一的URL狡恬。
HTTP協(xié)議:Hyper Text Transfer Protocol(超文本傳輸協(xié)議),http是一個(gè)應(yīng)用層的協(xié)議棺亭,由請求和響應(yīng)構(gòu)成虎眨,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型。
- 兩種請求方式:
GET
POST
l兩種請求方式的比較
相同點(diǎn):都能給服務(wù)器傳輸數(shù)據(jù)镶摘。
不同點(diǎn):
1嗽桩、給服務(wù)器傳輸數(shù)據(jù)的方式不同:
GET:通過網(wǎng)址字符串
POST:通過data
2、傳輸數(shù)據(jù)的大衅喔摇:
GET:網(wǎng)址字符串最多255字節(jié)
POST:使用NSData碌冶,容量超過1G
3、安全性:
GET:所有傳輸給服務(wù)器的數(shù)據(jù)涝缝,顯示在網(wǎng)址里扑庞,類似于密碼的銘文輸入譬重,可以直接讀取
POST:數(shù)據(jù)被轉(zhuǎn)為NSData(二進(jìn)制數(shù)據(jù)),類似于密碼的密文輸入嫩挤,無法直接讀取
//get 同步
- (void)getAndSynchionous {
//創(chuàng)建網(wǎng)址
NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20151031&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"];
//創(chuàng)建請求體
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//發(fā)送請求,連接服務(wù)器
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}
//session get請求(block)
- (void)sessionAndGet {
//創(chuàng)建網(wǎng)址和session對象
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20151031&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"];
//通過URL初始化tast 在block內(nèi)部可以直接返回對數(shù)據(jù)的處理
NSURLSessionDataTask *dast = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}];
[dast resume];
}
//post 請求
- (void)sessionAndPost {
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"];
//穿件請求體
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"date=20151031&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" dataUsingEncoding:NSUTF8StringEncoding];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}];
[task resume];
}
總結(jié)
- 網(wǎng)絡(luò)請求的步驟:1害幅、NSURL;2岂昭、NSURLResquest;3狠怨、NSURLConnection约啊;4、處理Error或者返回?cái)?shù)據(jù)佣赖。
- NSURLSession是iOS7中新的網(wǎng)絡(luò)處理方式恰矩,NSURLConnection在iOS較早的版本中使用廣泛。