I am trying out afnetworking 2.0 and just trying to figure out how to cancel specific tasks. The old way would be to use something like
[self cancelAllHTTPOperationsWithMethod:@"POST" path:@"user/receipts"]
but I dont see anything like this in 2.0
I created a sub class of AFHTTPSessionManager
which gives me access to the array of pending tasks and I can cancel them directly but I dont know how to identify 1 task from another so I can cancel only specific tasks.
Task does have an taskidentifier but this doesnt appear to be what I need.
NSString *path = [NSString stringWithFormat:@"user/receipts"];
[self.requestSerializer setAuthorizationHeaderFieldWithUsername:[prefs valueForKey:@"uuid"] password:self.store.authToken];
[self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
completionBlock(responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
errorBlock(error);
}];
now if i wanted to cancel this request only how would I approach this?
you can do the following
Where MyClient is a child of AFHTTPClient and the function sharedClient is a static function which returns a singleton instance of MyClient
No need to save it, here is my implementation, use your subclass of AFURLSessionManager for cancelling specific request:
You can store the task in a variable so you can access it later:
Then simply cancel it with
[task cancel]
.Another way would be to save the task ID of the task and later ask the URL session for its tasks and identify the task you wish to cancel: