1. 使用步驟
使用NSURLSession創(chuàng)建task,然后執(zhí)行task
關(guān)于task
a.NSURLSessionTask是一個抽象類,本身不能使用,只能使用它的子類
b.NSURLSessionDataTask\NSURLSessionUploadTask\NSURLSessionDownloadTask發(fā)送get請求
創(chuàng)建NSURLSession對象(可以獲取單例對象)
NSURLSession *session = [NSURLSession sharedSession];-
根據(jù)NSURLSession對象創(chuàng)建一個Task
NSURL *url = [NSURL URLWithSting:@"路徑"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];方法參數(shù)說明
-
注意:該block是在子線程中調(diào)用的,如果拿到數(shù)據(jù)之后要做一些刷新UI操作,那么需要回到主線程刷新
第一個參數(shù):需要發(fā)送的請求對象
block:當(dāng)請求結(jié)束拿到服務(wù)器響應(yīng)的數(shù)據(jù)時調(diào)用block
block-NSData:該請求的響應(yīng)體
block-NSURLResponse:存放本次請求的響應(yīng)信息,響應(yīng)頭,真是類型為NSHTTPURLResponse
block-nsercroe:請求錯誤信息
NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error) {拿到響應(yīng)頭信息
NSHTTPURLResponse *res =(NSHTTPURLResponse *)response; 解析拿到的響應(yīng)數(shù)據(jù)
NSLog(@"%@\n%@,[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding],res.allHeaderFields);
}];
執(zhí)行task
注意:剛創(chuàng)建出來的task默認是掛起狀態(tài)的 需要調(diào)用該方法啟動任務(wù)
[dataTask resume];
發(fā)送get請求的第二種方式
注意;該方法內(nèi)部默然會把URL對象包裝成一個NSURLReques對象(默認是GET請求)
方法參數(shù)說明
第一個參數(shù): 發(fā)送請求URL地址
block:當(dāng)請求結(jié)束拿到服務(wù)器響應(yīng)的數(shù)據(jù)時調(diào)用block
block-NSData:該請求的響應(yīng)題
block-NSURLResponse:存放本次請求的響應(yīng)信息.響應(yīng)頭,真實類型為NSHTTPURLResponse
block-NSErroe:請求錯誤信息
- (nullable NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url completionHandler:(void (^)(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error))completionHandler;-
發(fā)送POST請求
創(chuàng)建NSURLSession對象(可以獲取單例對象)
NSURLSession *session = [NSURLSession sharedSession];
根據(jù)NSURLSession對象創(chuàng)建一個Task
NSURL *url = [NSURL URLWithString:@"URL路徑 '];
創(chuàng)建一個請求對象,并設(shè)置請求方法為POST 把參數(shù)放在請求體重傳遞
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"參數(shù)" dataUsingEncoding:NSUTF8StringEncoding];NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error) {
拿到響應(yīng)頭信息
NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
解析拿到響應(yīng)數(shù)據(jù)
NSLog(@"%@\n%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding],res.allHeaderFields);
}];
執(zhí)行Task
注意剛創(chuàng)建出來的Task默認是掛起狀態(tài) 需要調(diào)用該方法來啟動
[dataTask resume];
純手動 有誤的地方希望大家能給指出 謝謝
如果對您有幫助 希望能給個關(guān)注和喜歡~~~