采用AFNetworking 2.0拦截和防止redirect的推荐方法是什么?

在我看来,适当的地方这样做是在AFURLSessionManager中设置taskWillPerformHTTPRedirection块,但我不确定处理它的最佳方式。

目前,在我的AFHTTPSessionManager子类中,我为所有请求全局设置了redirect块,我知道我可以通过在这里返回nil来防止redirect:

 - (void)setupRedirectBlock { [self setTaskWillPerformHTTPRedirectionBlock:^NSURLRequest *(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request) { return nil; }]; } 

…但是我只需要在具体任务上做到这一点,似乎没有办法从任务本身获取这些信息。

我想我正在寻找某种用户信息字典或我可以用来设置一个标志告诉这个方法要么返回request或返回nil 。 目前,看起来我必须对远离实际创build任务和path的客户端的响应/请求URL进行string比较。

所以这就引出了一个问题,我是在和公约打交道,还是真的没有更好的方法来在任务的基础上截获AFNetworking 2.0redirect?

setTaskWillPerformHTTPRedirectionBlock是拦截redirect的最佳方法。 会话pipe理器负责根据与任务相关的请求确定何时或何时不阻止redirect。 在大多数情况下,请求的path应该是足够的确定,但用户可以在自定义请求标头字段中额外标记信息。

我有同样的问题,但不幸的是我还没有一个足够好的答案。 一个解决方法可以使用taskDescription https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSessionTask_class/Reference/Reference.html#//apple_ref/occ/instp/NSURLSessionTask/taskDescription

只要在那里放一些像DO_NOT_FOLLOW_REDIRECT的常量,然后在你的setTaskWillPerformHTTPRedirectionBlock块中检查它。