什么时候NSURLResponse不是NSHTTPURLResponse?
我见过很多代码,包括苹果的SimpleURLConnections示例,只是将任何NSURLResponse转换为NSHTTPURLResponse。 如果它总是一个NSHTTPURLResponse为什么NSURLConnections不返回NSHTTPURLResponse?
我很担心,如果我只是低调的回应,我介绍错误的代码。
例如,没有检查isKindOfClass可以吗?
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)redirectResponse; // do stuff }
如果您确定您的连接是通过HTTP协议运行的,那么可以:
NSHTTPURLResponse对象表示对HTTP URL加载请求的响应。 它是NSURLResponse的一个子类,它提供了访问特定于HTTP协议响应的信息的方法。
例如,如果通过FTP进行连接,则将NSURLResponse
强制NSURLResponse
为NSHTTPURLResponse
将不正确。
更安全的做法是自省。
if ([response isKindOfClass:[NSHTTPURLResponse class]]) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)redirectResponse; // do stuff }