采用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块中检查它。
- AFNetworking 2.0 – 可变的JSON
- 在多个ViewController中使用WCSession
- iOS – 增加AFHTTPRequestOperationManager超时
- AFNetworking 500响应机构
- 苹果应用程序拒绝,因为Auth0 signUpLink在Cordova InAppBrowser中未打开,而是在系统浏览器(Safari)中打开,
- 调用ExtensionDelegate为复杂度创build/刷新数据
- 在运行AFHTTPSessionManager的AFNetworking 2中设置对并发任务的限制
- WCSession – PayloadTooLarge
- 为什么从WatchKit扩展到iOS发送消息并获得回复太慢?