標籤:style ssi username session 頭資訊 variable tpm ade 它的
(1)使用步驟
使用NSURLSession建立task,然後執行task
(2)關於task
a.NSURLSessionTask是一個抽象類別,本身不能使用,只能使用它的子類 b.NSURLSessionDataTask\NSURLSessionUploadTask\NSURLSessionDownloadTask
(3)發送get請求
//1.建立NSURLSession對象(可以擷取單例對象) NSURLSession *session = [NSURLSession sharedSession]; //2.根據NSURLSession對象建立一個Task NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=ss&pwd=ss&type=JSON"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; //方法參數說明 /* 注意:該block是在子線程中調用的,如果拿到資料之後要做一些UI重新整理操作,那麼需要回到主線程重新整理 第一個參數:需要發送的請求對象 block:當請求結束拿到伺服器響應的資料時調用block block-NSData:該請求的響應體 block-NSURLResponse:存放本次請求的響應資訊,回應標頭,真實類型為NSHTTPURLResponse block-NSErroe:請求錯誤資訊 */ NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error) { //拿到回應標頭資訊 NSHTTPURLResponse *res = (NSHTTPURLResponse *)response; //4.解析拿到的響應資料 NSLog(@"%@\n%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding],res.allHeaderFields); }]; //3.執行Task //注意:剛建立出來的task預設是掛起狀態的,需要調用該方法來啟動任務(執行任務) [dataTask resume];
(4)發送get請求的第二種方式
//注意:該方法內部預設會把URL對象封裝成一個NSURLRequest對象(預設是GET請求) //方法參數說明 /* //第一個參數:發送請求的URL地址 //block:當請求結束拿到伺服器響應的資料時調用block //block-NSData:該請求的響應體 //block-NSURLResponse:存放本次請求的響應資訊,回應標頭,真實類型為NSHTTPURLResponse //block-NSErroe:請求錯誤資訊 */- (nullable NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url completionHandler:(void (^)(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error))completionHandler;
(5)發送POST請求
//1.建立NSURLSession對象(可以擷取單例對象) NSURLSession *session = [NSURLSession sharedSession]; //2.根據NSURLSession對象建立一個Task NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login"]; //建立一個請求對象,並這是要求方法為POST,把參數放在請求體中傳遞 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; request.HTTPBody = [@"username=520it&pwd=520it&type=JSON" dataUsingEncoding:NSUTF8StringEncoding]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * __nullable data, NSURLResponse * __nullable response, NSError * __nullable error) { //拿到回應標頭資訊 NSHTTPURLResponse *res = (NSHTTPURLResponse *)response; //解析拿到的響應資料 NSLog(@"%@\n%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding],res.allHeaderFields); }]; //3.執行Task //注意:剛建立出來的task預設是掛起狀態的,需要調用該方法來啟動任務(執行任務) [dataTask resume];
NSURLSession的基本使用