У меня есть ситуация, когда мне нужно вызвать параллельные HTTP-запросы для получения данных. Я использовал CompletableFuture для получения данных, как показано ниже.
Generictype model = CompletableFuture.supplyAsync(() -> {
return lookupService.fetchData(token);
}, taskExecutor)
Проблема в том, что я передаю токен доступа, который имеет очень короткий период, скажем, 60 секунд после истечения срока его действия.
Если срок действия токена истек, мне нужно вызвать другую службу, чтобы получить токен обновления, и повторить тот же запрос с этим новым токеном.
Как я могу справиться с ситуацией, когда срок действия токена истекает между параллельными вызовами.
Что я пытаюсь сделать, так это то, что когда срок действия токена доступа истекает, он создает исключение UnAuthorized 401.
Я пытаюсь поймать исключение в исключительном блоке CompletableFuture, как показано ниже.
Generictype model = CompletableFuture.supplyAsync(() -> {
return lookupService.fetchData(token);
}, taskExecutor)
.exceptionally(exception -> {
String newToken = lookupService.getNewToken(token);
model = lookupService.fetchData(newToken);
return model;
});
Когда я получаю исключение, оно входит в исключительный блок, но запрос не выполняется должным образом. Он отвечает ответом 302 SAMEORIGIN.
Это правильный способ справиться с этой ситуацией или есть ли другой способ, чтобы я мог повторить запрос, когда срок действия токена доступа истек?
handle
и проверить ответ и проверить, является ли он действительным или нет, и в В таком случае выполните логику повторной попытки. - person Shankha057   schedule 10.11.2019