iOS9.0后峻堰,官方推出了NSURLSession用來替代NSURLConnection來實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求未蝌。這里我們就介紹一下NSURLSession的簡單應(yīng)用。
1茧妒、GET請(qǐng)求
????????NSURLSession *session = [NSURLSession sharedSession];
? ? ? ? NSString*urlStr = @"https://XXX";
? ? ? ? NSURL*url = [NSURL URLWithString:urlStr];
? ? ? ? NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
? ? ? ? request.HTTPMethod=@"GET";//設(shè)置請(qǐng)求方式
? ? ? ? request.timeoutInterval=15;//設(shè)置超時(shí)時(shí)間
? ? ? ? [requestsetValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];//設(shè)置請(qǐng)求頭類型
? ? ? ? NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
? ? ? ? request.HTTPBody= jsonData;//設(shè)置消息體
? ? ? ? NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
? ? ? ? ? ? ? ? //解析數(shù)據(jù) 返回json解析
? ? ? ? ? ? ? ? if(data) {
? ? ? ? ? ? ? ? ? ? NSDictionary *responsedict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
? ? }];
? ? ? ? [dataTask resume];
2、POST請(qǐng)求
? ? 把?HTTPMethod設(shè)置為POST即可
????request.HTTPMethod=@"POST";//設(shè)置請(qǐng)求方式
下面介紹Content-Type幾種值的區(qū)別及用法
1左冬、Content-Type常用的的類型有
????1.1 application/json:消息主體是序列化后的JSON字符串
????1.2 application/x-www-form-urlencoded:數(shù)據(jù)被編碼為名稱/值對(duì)桐筏。這是標(biāo)準(zhǔn)的編碼格式
????1.3 text/plain:數(shù)據(jù)以純文本形式(text/json/xml/html)進(jìn)行編碼,其中不含任何控件或格式字符拇砰。? ??
2梅忌、實(shí)際應(yīng)用中常用的幾種用法
????2.1 application/json:請(qǐng)求主題為json格式的字符串,服務(wù)器端會(huì)對(duì)json字符串進(jìn)行解析除破,大多數(shù)都是用此類型
????2.2? application/x-www-form-urlencoded:服務(wù)端要求以鍵值對(duì)key1=value1&key2=value2方式上傳消息體牧氮。需要設(shè)置成此模式?
? ? 此時(shí)客戶端需要對(duì)上傳的消息體做轉(zhuǎn)換處理。參考如下
????????NSString *keyValueFormat;
? ? ? ? NSMutableString *result = [NSMutableString new];
? ? ? ? NSEnumerator *keyEum = [parameters keyEnumerator];
? ? ? ? idkey;
? ? ? ? while(key = [keyEum nextObject]) {
? ? ? ? ? ? keyValueFormat = [NSStringstringWithFormat:@"%@=%@&",key,[parameters valueForKey:key]];
? ? ? ? ? ? [result appendString:keyValueFormat];
? ? ? ? }
? ? ? ? NSData *jsonData = [result dataUsingEncoding:NSUTF8StringEncoding];