1

在使用 3rd 方 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. 有人可以帮我吗?

4

1 回答 1

3

在创建操作并将其排入队列的那一刻AFHTTPClient,它们将没有来自服务器的响应——将在实际执行请求操作时分配。

尽管取消所有流量的要求似乎不合常规(至少在 HTTP 约定之外的情况下),但这很容易实现:

在您的AFHTTPClient子类中,添加一个BOOL存储是否应阻止请求的属性,然后在enqueueHTTPRequestOperation. 然后,如果存在显着响应,则覆盖HTTPRequestOperationWithRequest:success:failure:以执行指定的成功块以及一些设置上述属性的逻辑。

于 2012-07-03T18:42:38.800 回答