image.png
image.png
NSURLSessionConfiguration的三種類型:
- A default session behaves much like the shared session, but allows more configuration, and allows you to obtain data incrementally with a delegate.
- Ephemeral sessions are similar to shared sessions, but don’t write caches, cookies, or credentials to disk.
- Background sessions let you perform uploads and downloads of content in the background while your app isn't running.
1乖酬、 defaultSessionConfiguration
: 默認(rèn)的session配置, 類似NSURLConnection的標(biāo)準(zhǔn)配置, 使用硬盤來存儲(chǔ)緩存數(shù)據(jù).
2、 ephemeralSessionConfiguration
: 臨時(shí)的session配置, 與默認(rèn)配置相比, 這個(gè)配置不會(huì)將緩存吕嘀、cookie等存在本地胞谭,只會(huì)存在內(nèi)存里,所以當(dāng)程序退出時(shí),所有的數(shù)據(jù)都會(huì)消失
3柑司、 backgroundSessionConfiguration
: 后臺(tái)session配置, 與默認(rèn)配置類似, 不同的是會(huì)在后臺(tái)開啟另一個(gè)線程來處理網(wǎng)絡(luò)數(shù)據(jù).
回調(diào)方式二選一(Block)或 (Delegate):
image.png
image.png
url_session_diagram_1.png
使用NSURLSession,攏共分兩步:
- 第一步 通過NSURLSession的實(shí)例創(chuàng)建task
- 第二部 執(zhí)行task
簡(jiǎn)單GET請(qǐng)求
// 快捷方式獲得session對(duì)象
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://www.daka.com/login?username=daka&pwd=123"];
// 通過URL初始化task,在block內(nèi)部可以直接對(duì)返回的數(shù)據(jù)進(jìn)行處理
NSURLSessionTask *task = [session dataTaskWithURL:url
completionHandler:^(NSData *data, NSURLResponse *response, NSError error) {
NSLog(@"%@", [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);
}];
// 啟動(dòng)任務(wù)
[task resume];
簡(jiǎn)單POST請(qǐng)求
NSURL *url = [NSURL URLWithString:@"http://www.daka.com/login"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"username=daka&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];
NSURLSession *session = [NSURLSession sharedSession];
// 由于要先對(duì)request先行處理,我們通過request初始化task
NSURLSessionTask *task = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"%@", [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]); }];
[task resume];