在我看来,在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重定向?
答案 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块中检查它。