使用AFNetworking 2.0拦截和阻止重定向的推荐方法是什么?

时间:2014-03-21 14:12:20

标签: ios networking redirect afnetworking-2 nsurlsessiontask

在我看来,在AFURLSessionManager设置taskWillPerformHTTPRedirection块时,适当的位置是AFHTTPSessionManager,但我不确定处理它的最佳方法。

目前,在我的nil子类中,我正在为所有请求全局设置重定向块,我知道我可以通过在此处返回- (void)setupRedirectBlock { [self setTaskWillPerformHTTPRedirectionBlock:^NSURLRequest *(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request) { return nil; }]; } 来阻止重定向:

request

...但我只需要针对特定​​任务执行此操作,并且似乎不是从任务本身获取此信息的方法。

我想我正在寻找某种用户信息词典或者我可以用来设置一个标志,告诉这个方法返回nil或返回{{1}}。目前,看起来我必须对客户端中的响应/请求URL进行字符串比较,因为它远离实际创建任务和路径的位置。

所以这就引出了一个问题,我是在与常规进行对抗,还是没有更好的方法可以逐个任务地拦截AFNetworking 2.0重定向?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

我有同样的问题,但不幸的是我还没有足够好的答案。一种解决方法可能是使用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块中检查它。