NSURLResponse 相關(guān)
與響應(yīng)URL加載請(qǐng)求相關(guān)聯(lián)的元數(shù)據(jù),獨(dú)立于協(xié)議和URL方案。
相關(guān)的NSHTTPURLResponse類是NSURLResponse的一個(gè)常用子類,它的對(duì)象表示對(duì)HTTPURL加載請(qǐng)求的響應(yīng),并存儲(chǔ)其他特定于協(xié)議的信息,如響應(yīng)頭。
無論何時(shí)發(fā)出HTTP請(qǐng)求,返回的NSURLResponse對(duì)象實(shí)際上是NSHTTPURLResponse類的一個(gè)實(shí)例。
注意: NSURLResponse對(duì)象不包含表示URL內(nèi)容的實(shí)際字節(jié)。相反,數(shù)據(jù)要么通過委托調(diào)用一次返回一部分,要么在請(qǐng)求完成時(shí)返回全部,這取決于用于初始化請(qǐng)求的方法和類。
將獲取的網(wǎng)站數(shù)據(jù)讀入內(nèi)存,學(xué)習(xí)從URL加載接收內(nèi)容數(shù)據(jù)的各種方法。
NSURLResponse 相關(guān)屬性和方法
- (instancetype)initWithURL:(NSURL *)URL MIMEType:(nullable NSString *)MIMEType expectedContentLength:(NSInteger)length textEncodingName:(nullable NSString *)name NS_DESIGNATED_INITIALIZER
創(chuàng)建一個(gè)初始化的NSURLResponse對(duì)象,將URL、MIME類型、長度和文本編碼設(shè)置為給定值。
這是NSURLResponse的指定初始化器。
@property (nullable, readonly, copy) NSURL *URL;
響應(yīng)的URL。
返回接收方的URL。
@property (nullable, readonly, copy) NSString *MIMEType;
響應(yīng)的MIME類型。
MIME類型通常由響應(yīng)的原始源提供。
但是,如果可以確定響應(yīng)的源報(bào)告的信息不正確,則可以通過協(xié)議實(shí)現(xiàn)更改或更正該值。
如果響應(yīng)的原始源不提供MIME類型,則可以嘗試猜測MIME類型。
@property (readonly) long long expectedContentLength;
響應(yīng)內(nèi)容的預(yù)期長度。
如果長度無法確定,則此屬性的值為NSURLResponseUnknownLength。
一些協(xié)議實(shí)現(xiàn)將內(nèi)容長度報(bào)告為響應(yīng)的一部分,但并不是所有協(xié)議都保證能夠交付那么多數(shù)據(jù)。
您的應(yīng)用程序應(yīng)該準(zhǔn)備好處理或多或少的數(shù)據(jù)。
@property (nullable, readonly, copy) NSString *textEncodingName;
由響應(yīng)的原始源提供的文本編碼的名稱。
如果協(xié)議沒有提供文本編碼,則此屬性的值為nil。
您可以通過調(diào)用CFStringConvertIANACharSetNameToEncoding將該字符串轉(zhuǎn)換為CFStringEncoding值。
隨后,您可以通過調(diào)用CFStringConvertEncodingToNSStringEncoding將該值轉(zhuǎn)換為NSStringEncoding值。
@property (nullable, readonly, copy) NSString *suggestedFilename;
響應(yīng)數(shù)據(jù)的建議文件名。
訪問此屬性時(shí),嘗試使用以下信息生成文件名,以便:
使用內(nèi)容配置頭指定的文件名。
URL的最后一個(gè)路徑組件。
URL的主機(jī)。
如果URL的主機(jī)不能轉(zhuǎn)換為有效的文件名,則使用文件名“unknown”。
在大多數(shù)情況下,該屬性根據(jù)MIME類型附加適當(dāng)?shù)奈募U(kuò)展名。
無論資源是否保存到磁盤,訪問此屬性總是返回一個(gè)有效的文件名。
NSHTTPURLResponse 相關(guān)
與響應(yīng)HTTP協(xié)議URL加載請(qǐng)求相關(guān)聯(lián)的元數(shù)據(jù)。
NSHTTPURLResponse類是NSURLResponse的子類,它提供了訪問特定于HTTP協(xié)議響應(yīng)的信息的方法。
無論何時(shí)進(jìn)行HTTPURL加載請(qǐng)求,從NSURLSession、NSURLConnection或NSURLDownload類中返回的任何響應(yīng)對(duì)象都是NSHTTPURLResponse類的實(shí)例。
它是NSURLResponse的專門化,為訪問特定于HTTP協(xié)議響應(yīng)的信息提供了便利。
NSHTTPURLResponse 相關(guān)屬性方法
- (nullable instancetype)initWithURL:(NSURL *)url statusCode:(NSInteger)statusCode HTTPVersion:(nullable NSString *)HTTPVersion headerFields:(nullable NSDictionary<NSString *, NSString *> *)headerFields API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0));
使用狀態(tài)代碼、協(xié)議版本和響應(yīng)頭初始化HTTP URL響應(yīng)對(duì)象。
@property (readonly) NSInteger statusCode;
響應(yīng)的HTTP狀態(tài)代碼。
返回接收方的HTTP狀態(tài)碼。
@property (readonly, copy) NSDictionary *allHeaderFields;
響應(yīng)的所有HTTP頭字段。
包含作為服務(wù)器響應(yīng)的一部分接收到的所有HTTP頭字段的字典。通過檢查這個(gè)字典,客戶機(jī)可以看到HTTP服務(wù)器返回的“原始”頭信息。
此字典中的鍵是從服務(wù)器接收到的頭字段名稱。有關(guān)常用HTTP頭字段的列表,請(qǐng)參見RFC 2616。
HTTP報(bào)頭不區(qū)分大小寫。為了簡化代碼,將某些頭字段名規(guī)范化為它們的標(biāo)準(zhǔn)形式。例如,如果服務(wù)器發(fā)送一個(gè)content-length頭,它會(huì)自動(dòng)調(diào)整為Content-length。
返回的標(biāo)頭字典在set操作期間被配置為保留大小寫(除非鍵已經(jīng)與不同的大小寫一起存在),并且在查找鍵時(shí)不區(qū)分大小寫。
例如,如果您設(shè)置了頭文件X-foo,然后又設(shè)置了頭文件X-foo,那么字典的鍵值將是X-foo,但是值將取自X-foo頭文件。
+ (NSString *)localizedStringForStatusCode:(NSInteger)statusCode;
返回與指定HTTP狀態(tài)碼對(duì)應(yīng)的本地化字符串。
HTTP狀態(tài)碼。詳見RFC 2616。
用于向用戶顯示描述指定狀態(tài)代碼的本地化字符串。