每次使用AFNetworking时如何阅读响应标头?

时间:2012-07-02 14:34:43

标签: ios afnetworking

使用第三方API时,我需要在自定义响应标头设置为特定值时取消所有流量。我试图在我的代码中找到一个检查一次的好地方(而不是在每个成功/失败块中,它工作正常)。根据我的理解,这可以通过覆盖我的自定义-(void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation子类中的AFHTTPClient来完成,但是当我按照这样的方式实现它时:

-(void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation
{
    NSLog(@"[REQUEST URL]\n%@\n", [operation.request.URL description]);
    NSLog(@"[RESPONSE HEADERS]\n%@\n", [[operation.response allHeaderFields] descriptionInStringsFileFormat]);

    [super enqueueHTTPRequestOperation:operation];
}

响应标头为nil。有人可以帮我吗?

1 个答案:

答案 0 :(得分:3)

AFHTTPClient中创建和排队操作时,他们将没有来自服务器的响应 - 将在实际执行请求操作时分配。

虽然取消所有流量的要求似乎是非正统的(至少在HTTP惯例之外),但这很容易实现:

AFHTTPClient子类中,添加BOOL属性,用于存储是否应阻止请求,然后在enqueueHTTPRequestOperation中使用。然后,覆盖HTTPRequestOperationWithRequest:success:failure:以执行指定的成功块以及一些逻辑,以便在存在突出响应时设置上述属性。