It seems to me that the proper place to do this is in AFURLSessionManager
, in setting the taskWillPerformHTTPRedirection
block, but I am unsure of the best way to handle it.
Currently, in my AFHTTPSessionManager
subclass, I am setting the redirect block globally for all requests, and I know I can prevent redirects by returning nil
here:
- (void)setupRedirectBlock {
[self setTaskWillPerformHTTPRedirectionBlock:^NSURLRequest *(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request) {
return nil;
}];
}
...but I need to only do this on specific tasks, and there doesn't appear to be a way to get this information from the task itself.
I guess I am looking for some sort of user info dictionary or something I can use to set a flag telling this method to either return the request
or return nil
. Currently, it looks like I would have to do a string comparison on the response/request URL in the client where it is far away from where the task and path is actually created.
So this begs the question, am I fighting convention, or is there really no better way to intercept an AFNetworking 2.0 redirect on a task-by-task basis?