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]); } } |



