14

我试图弄清楚如何从 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){

}];
4

4 回答 4

38

完成此操作的最简单方法是使用在成功和失败块中都可用的 AFHTTPRequestOperation 实例的响应属性(而不是块的响应对象)。

此响应对象是NSHTTPURLResponse的一个实例,您可以向它发送一条消息 allHeaderFields以获取请求的所有标头。

于 2012-09-10T12:51:44.963 回答
6

很简单,因为接受的答案实际上没有示例:

[operationInstance setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
       NSLog(@"%@", operation.response.allHeaderFields);
}];
于 2014-09-18T19:36:59.533 回答
4

我无法通过 [[operation response] allHeaderFields]or解决它operation.response.allHeaderFields,因为它给出了编译错误。

我只是将其类型转换为(NSDictionary *)并访问键值

[[(NSDictionary *)operation valueForKey: @"response"] valueForKey: @"allHeaderFields"]

于 2014-05-20T07:52:38.417 回答
0
NSDictionary *responseheaders = [HTTPResponse allHeaderFields];
NSString *newtoken = [responseheaders valueForKey:@"Authorization"];
于 2017-02-24T06:52:42.447 回答