HTTP连接的头信息包括在NSHTPURLResponse类中。如果你拥有一个NSHTTPURLResponse变量,你可以通过发送allHeaderFields信息,轻而易举地获取以NSDictionary形式保存的头信息。

 
对于一个同步请求 – 由于会引发阻塞所以不推荐使用 – 是很容易初始化一个NSHTTPURLResponse的:
 
1
2
3
4
5
6
7
8
9
10
NSURL *url = [NSURL URLWithString:@"http://www.mobileorchard.com"];
NSURLRequest *request = [NSURLRequest requestWithURL: url];
NSHTTPURLResponse *response;

[NSURLConnection sendSynchronousRequest: request returningResponse: &response error: nil];
if ([response respondsToSelector:@selector(allHeaderFields)])
{
    NSDictionary *dictionary = [response allHeaderFields];
    NSLog([dictionary description]);
}

而对于异步请求,你必须多做点工作。当回调connection:didReceiveResponse:被调用时,NSURLResponse会被作为第二个参数传递。你就可以象下面代码那样将其转化为NSHTTPURLResponse:
 
1
2
3
4
5
6
7
8
9
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{  
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
    if ([response respondsToSelector:@selector(allHeaderFields)])
    {
        NSDictionary *dictionary = [httpResponse allHeaderFields];
        NSLog([dictionary description]);
    }
}