使用第三方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
。有人可以帮我吗?
答案 0 :(得分:3)
在AFHTTPClient
中创建和排队操作时,他们将没有来自服务器的响应 - 将在实际执行请求操作时分配。
虽然取消所有流量的要求似乎是非正统的(至少在HTTP惯例之外),但这很容易实现:
在AFHTTPClient
子类中,添加BOOL
属性,用于存储是否应阻止请求,然后在enqueueHTTPRequestOperation
中使用。然后,覆盖HTTPRequestOperationWithRequest:success:failure:
以执行指定的成功块以及一些逻辑,以便在存在突出响应时设置上述属性。