我正在试图弄清楚如何从AFNetworking请求中读取响应标头?
是否可以在以下代码段中,或者我是否需要采取其他方法?
// Create client
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://example.com/"]];
// Send request
[client getPath:@"/test" parameters:nil success:^(AFHTTPRequestOperation *operation, id response) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error){
}];
答案 0 :(得分:37)
实现此目的的最简单方法是使用AFHTTPRequestOperation实例的响应属性(不是块的响应对象),该实例在成功和失败块中都可用。
此响应对象是NSHTTPURLResponse的一个实例,您可以向其发送allHeaderFields
消息,以获取您请求的所有标头。
答案 1 :(得分:6)
很简单,因为接受的答案实际上没有一个例子:
[operationInstance setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", operation.response.allHeaderFields);
}];
答案 2 :(得分:4)
我无法解决它
[[operation response] allHeaderFields]
或operation.response.allHeaderFields
,
因为它给出了编译错误。
我只是将其类型化为(NSDictionary *)
并以
[[(NSDictionary *)operation valueForKey: @"response"] valueForKey: @"allHeaderFields"]