Sto usando la libreria okhttp nella mia applicazione Android con diverse richieste asincrone. Tutte le richieste richiedono che il token sia impostato nell'intestazione. A volte ho bisogno di aggiornare quel token usando RefreshToken, quindi decido di usare la classe Authenticator di OkHttp.Multithreading autenticatore Okhttp
Cosa succede quando 2 o più richieste asincrone ricevono il codice 401 dal server all'incirca nello stesso momento? Sarebbe il metodo del Authenticator
@Override
public Request authenticate(Proxy proxy, Response response) throws IOException
{
return null;
}
essere chiamato per ogni richiesta, o sarà chiamato solo una volta per prima richiesta, che ha ottenuto 401?
Come aggiornare il token una sola volta?
In questo modo, si perdono le richieste che vengono restituite, non è vero? Con il modo in cui metto di seguito, puoi chiamare di nuovo quelle richieste. – antonicg
Quale scenario intendi? Se il server non ha scaduto il vecchio token di accesso quando ne viene generato uno nuovo, non è necessario bloccarlo e non è un problema quando ne perdiamo uno perché avremo ancora un token di accesso che funziona. Ovviamente difende il modo in cui funziona il tuo sistema. In un secondo scenario ho descritto come evitare di richiamare più richieste di "aggiornamento dei token di accesso" in primo luogo (il blocco sincronizzato impedirà di farlo), quindi nulla andrà perso. –
È vero, se il server non scade il vecchio accesso non è necessario per bloccare le vecchie richieste. Grazie per l'approvazione. – antonicg