版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2018.03.11 |
前言
我們做APP發(fā)起網(wǎng)絡(luò)請(qǐng)求蹂午,一般都是使用框架窑业,這些框架的底層也都是蘋(píng)果的API,接下來(lái)幾篇就一起來(lái)看一下和網(wǎng)絡(luò)有關(guān)的幾個(gè)類(lèi)困后。感興趣的可以看上面幾篇文章乐纸。
1. 詳細(xì)解析幾個(gè)和網(wǎng)絡(luò)請(qǐng)求有關(guān)的類(lèi) (一) —— NSURLSession
2. 詳細(xì)解析幾個(gè)和網(wǎng)絡(luò)請(qǐng)求有關(guān)的類(lèi)(二) —— NSURLRequest和NSMutableURLRequest
3. 詳細(xì)解析幾個(gè)和網(wǎng)絡(luò)請(qǐng)求有關(guān)的類(lèi)(三) —— NSURLConnection
4. 詳細(xì)解析幾個(gè)和網(wǎng)絡(luò)請(qǐng)求有關(guān)的類(lèi)(四) —— NSURLSession和NSURLConnection的區(qū)別
5. 詳細(xì)解析幾個(gè)和網(wǎng)絡(luò)請(qǐng)求有關(guān)的類(lèi)(五) —— 關(guān)于NSURL加載系統(tǒng)(一)
6. 詳細(xì)解析幾個(gè)和網(wǎng)絡(luò)請(qǐng)求有關(guān)的類(lèi)(六) —— 使用NSURLSession(二)
回顧
上一篇主要描述了NSURLSession的使用,這一篇主要說(shuō)一下URL數(shù)據(jù)的編碼和解碼摇予。
Encoding and Decoding URL Data - URL數(shù)據(jù)的編碼和解碼
要對(duì)URL字符串的一部分進(jìn)行百分比編碼汽绢,請(qǐng)使用NSString方法stringByAddingPercentEncodingWithAllowedCharacters:,為URL組件或子組件傳遞適當(dāng)?shù)淖址?/p>
-
User
: URLUserAllowedCharacterSet -
Password
:URLPasswordAllowedCharacterSet -
Host
:URLHostAllowedCharacterSet -
Path
:URLPathAllowedCharacterSet -
Fragment
:URLFragmentAllowedCharacterSet -
Query
:URLQueryAllowedCharacterSet
重要提示:請(qǐng)勿使用
stringByAddingPercentEncodingWithAllowedCharacters:
對(duì)整個(gè)URL字符串進(jìn)行編碼侧戴,因?yàn)槊總€(gè)URL組件或子組件對(duì)于哪些字符有效具有不同的規(guī)則宁昭。
例如,要將包含在URL片段中的UTF-8字符串進(jìn)行百分比編碼酗宋,請(qǐng)執(zhí)行以下操作:
NSString *originalString = @"color-#708090";
NSCharacterSet *allowedCharacters = [NSCharacterSet URLFragmentAllowedCharacterSet];
NSString *percentEncodedString = [originalString stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];
NSLog(@"%@", percentEncodedString"); // prints "color-%23708090"
let originalString = "color-#708090"
let allowedCharacters = NSCharacterSet.urlFragmentAllowed
let encodedString = originalString.addingPercentEncoding(withAllowedCharacters: allowedCharacters)
print(encodedString!) // prints "color-%23708090"
如果要解碼百分比編碼的URL組件积仗,請(qǐng)使用 NSURLComponents將URL拆分為其組成部分并訪問(wèn)相應(yīng)的屬性。
例如本缠,要獲取百分比編碼的URL片段的UTF-8字符串值斥扛,請(qǐng)執(zhí)行以下操作:
NSURL *URL = [NSURL URLWithString:@"https://example.com/#color-%23708090"];
NSURLComponents *components = [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:NO];
NSString *fragment = components.fragment;
NSLog(@"%@", fragment); // prints "color-#708090"
let url = URL(string: "https://example.com/#color-%23708090")!
let components = URLComponents(url: url, resolvingAgainstBaseURL: true)!
let fragment = components.fragment!
print(fragment) // prints "color-#708090"
后記
本篇主要講述了URL數(shù)據(jù)的編碼和解碼。