什么时候NSURLResponse不是NSHTTPURLResponse?

Cor*_*uff 16 iphone nsurlconnection ios

我已经看到很多代码,包括Apple的SimpleURLConnections示例,只是将任何NSURLResponse转换为NSHTTPURLResponse.如果它始终是NSHTTPURLResponse,为什么NSURLConnections不返回NSHTTPURLResponse?

我担心如果我简单地低估了响应,我就会引入错误的代码.

例如,没有检查isKindOfClass就可以这样做吗?

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

mgo*_*old 19

更安全的方法是内省.

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


Nek*_*kto 17

如果您确定您的连接通过HTTP协议运行,则可以:

NSHTTPURLResponse对象表示对HTTP URL加载请求的响应.它是NSURLResponse的子类,提供访问特定于HTTP协议响应的信息的方法.

例如,如果您通过FTP连接,则转换NSURLResponseNSHTTPURLResponse不正确.