2012-07-02 42 views
1

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

-(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。有人可以帮我吗?

回答

3

在创建操作并将其排入AFHTTPClient时,它们不会有来自服务器的响应 - 当请求操作被实际执行时将被分配。

虽然取消所有流量的要求似乎非正统的(至少如果HTTP的约定外),这是很容易做到:

在你AFHTTPClient子类,添加一个BOOL财产,如果该商店的请求应阻止,然后在enqueueHTTPRequestOperation中使用。然后,覆盖HTTPRequestOperationWithRequest:success:failure:以执行指定的成功块以及某些逻辑,以在存在突出响应时设置上述属性。

+0

由于某种原因,我没有看到这个答案 - 非常感谢您的帮助,它很好。 – phi

相关问题