У меня есть следующий сценарий в приложение, которое использует AFNetworking
сделать услуги звонков:AFHTTPRequestOperation зависимость
- Я называю специальную службу, которая будет генерировать маркер для меня
- я называю сервис, который я хочу, отправив этот токен в качестве параметра
- Я вызываю другую специальную службу, чтобы уничтожить токен.
Я должен следовать этим 3 шагам каждый раз, когда я делаю запрос на сервер. Я не могу изменить способ работы сервера, поэтому я должен выполнить это требование. Я также не могу использовать один и тот же токен для нескольких запросов.
Мой вопрос заключается в следующем - я пытался сделать это с помощью AFHTTPRequestOperation
S:
NSError *serializationError = nil;
NSMutableURLRequest *request = [self.manager.requestSerializer requestWithMethod:@"POST" URLString:[[NSURL URLWithString:@"serviceName.json" relativeToURL:self.manager.baseURL] absoluteString] parameters:@{ @"token": token } error:&serializationError];
AFHTTPRequestOperation *myRequestOperation = [self.manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
// Success login
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
// Failure logic
}];
[myRequestOperation addDependency:createTokenRequestOperation];
где self.manager
является экземпляром AFHTTPRequestOperationManager
, но есть проблема - я не имею значения для token
.
Поскольку myRequestOperation
должен выполняться только после пункта 1 из списка выше, я делаю его зависимым от операции, которая даст мне токен.
Теперь приходит мое замешательство - как я могу создать операцию, которая использует параметр из предыдущей операции, когда мне нужно, чтобы оба они были созданы, чтобы заставить их зависеть от другого?
мой Quess вы можете создать * переменную * в каком-либо объекте или в текущем вызывающем абоненте afhttp-operation. И когда первая операция завершается, она устанавливает токен этой * переменной *. Когда будет вызываться следующая операция, она проверяет, есть ли значение oken в этой * переменной *. – Massmaker