簡體   English   中英

什么時候NSURLResponse不是NSHTTPURLResponse?

[英]When is a NSURLResponse not a NSHTTPURLResponse?

我已經看到很多代碼,包括Apple的SimpleURLConnections示例,只是將任何NSURLResponse轉換為NSHTTPURLResponse。 如果它始終是NSHTTPURLResponse,為什么NSURLConnections不返回NSHTTPURLResponse?

我擔心如果我簡單地低估了響應,我就會引入錯誤的代碼。

例如,沒有檢查isKindOfClass就可以這樣做嗎?

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
{
 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)redirectResponse;
 // do stuff
}

更安全的方法是內省。

if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
   NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)redirectResponse;
   // do stuff
}

如果您確定您的連接通過HTTP協議運行,則可以:

NSHTTPURLResponse對象表示對HTTP URL加載請求的響應。 它是NSURLResponse的子類,提供訪問特定於HTTP協議響應的信息的方法。

例如,如果您通過FTP連接,則將NSURLResponseNSHTTPURLResponse將不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM