ios - AFNetworking 2.0//如何读取响应头

标签 ios objective-c cocoa-touch ios7 afnetworking-2

我正在使用新版本的 AFNetworking,但我不知道如何读取响应的 header 。 我正在使用 AFHTTPSessionManager 执行我的查询,一切正常,但我无法找到 header 响应字段。

我是这样处理的

self.sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:BASE_URL]];
[self.sessionManager GET:urlId parameters:nil
    success:^(NSURLSessionDataTask *task, id responseObject) {
        if ([self.delegate respondsToSelector:@selector(userIsLoadedWithInfos:)]) {
            [self.delegate userIsLoadedWithInfos: responseObject];
        }
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        if ([self.delegate respondsToSelector:@selector(userLoadingFailed)]) {
            [self.delegate userLoadingFailed];
        }
    }
];

我试图读取任务的响应属性,但它返回一个不包含 header 的 NSURLResponse。

现在有人知道如何使用 2.0 版本读取响应 header 吗?

最佳答案

比 Viruss mcs 的代码更健壮:

if ([task.response isKindOfClass:[NSHTTPURLResponse class]]) {
    NSHTTPURLResponse *r = (NSHTTPURLResponse *)task.response;
    NSLog(@"%@" ,[r allHeaderFields]);
}

返回

{
    Connection = "Keep-Alive";
    "Content-Length" = 12771;
    "Content-Type" = "application/json";
    Date = "Fri, 06 Dec 2013 10:40:48 GMT";
    "Keep-Alive" = "timeout=5";
    "Proxy-Connection" = "Keep-Alive";
    Server = "gunicorn/18.0";
}

同样,您可以使用 [response respondsToSelector:@selector(allHeaderFields)] 确保转换正确完成,但您还应该在转换之前调用它

if ([task.response respondsToSelector:@selector(allHeaderFields)]) {
    NSHTTPURLResponse *r = (NSHTTPURLResponse *)task.response;
    NSLog(@"%@" ,[r allHeaderFields]);
}

或者根本没有类型转换:

if ([task.response respondsToSelector:@selector(allHeaderFields)]) {
    NSLog(@"%@" ,[task.response performSelector:@selector(allHeaderFields)]);
}

关于ios - AFNetworking 2.0//如何读取响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421028/

相关文章:

ios - 我是否需要进行大量迁移才能修改核心数据中的关系?

ios - UIView 与 UISegmentedControl 重叠

ios - 在 Objective C 中前向声明结构

iphone - 如何在Three20的AppDelegate中添加全局右栏按钮(UINavigationController)

iOS 8 键盘扩展检测第一响应者变化

objective-c - 执行cancelPreviousPerformRequestsWithTarget :selector:object: for all objects

ios - UITableView 页脚,停止在内容上 float

iOS 使用 openCV 从相机检测矩形

objective-c - 将下拉菜单添加到 OS X 中的 NSSearchField

objective-c - 错误 : Mutating method sent to immutable object for NSMutableArray from JSON file