En utilisant Glide v4 et OkHttp3, comment puis-je détecter une redirection et charger une autre URL quand cela arrive?Comment détecter une redirection dans Glide v4/OkHttp3?
Mon utilisation: J'utilise la bibliothèque Glide v4 avec OkHttp3 pour télécharger des images dans mon application. Parfois, quand une image n'est pas disponible, une redirection est effectuée par le serveur pour fournir une autre image au lieu de celle que je voulais initialement. Je peux le voir dans mon navigateur car quand je demande l'url A, j'atterris finalement sur l'URL B avec la deuxième image. Quand cela arrive, je veux plutôt charger l'URL C qui est dérivée de l'url A (donc pas une URL statique).
En ce moment je peux détecter la redirection en utilisant un OkHttp3 Interceptor:
public Response intercept(@NonNull Chain chain) throws IOException {
String requestUrl = chain.request().url().toString();
Response response = chain.proceed(chain.request());
String responseUrl = response.request().url().toString();
boolean redirect = !requestUrl.equals(responseUrl);
if (redirect) {
Timber.d("Detected redirection");
}
return response;
}
mais je ne vois pas savoir comment charger proprement C. URL Je ne peux pas comment je charger une autre URL l'intercepteur, et si je lance une exception IOException pour gérer l'erreur plus tard dans un Glide RequestListener, cela entraînera une exception GlideException, donc je ne peux pas déterminer pourquoi il a été lancé.