15 votes

Comment obtenir l'URL de la requête dans Retrofit 2.0 avec RxJava ?

Je suis en train de passer à Retrofit 2.0 et d'ajouter RxJava dans mon projet android. Je fais un appel api et je veux récupérer l'URL et l'associer aux données de la réponse dans sqlite en tant que cache

Observable apiCall(@Body body);

Et dans l'appel RxJava:

myRetrofitObject.apiCall(body).subscribe(new Subscriber() {
    @Override
    public void onCompleted() {

    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onNext(MyResponseObject myResponseObject) {

    }
});

Avec Retrofit 1.9, nous pouvions obtenir l'URL dans le callback de succès:

        @Override
        public void success(MyResponseObject object, Response response) {
            String url=response.getUrl();
            //sauvegarder les données de l'objet et l'URL dans sqlite
        }

Comment faites-vous cela avec Retrofit 2.0 en utilisant RxJava ?

25voto

LordRaydenMK Points 7908

Mise à jour :

Après avoir relu la question :

Si vous voulez accéder à la réponse brute, vous devez définir votre interface API comme ceci :

Observable> apiCall(@Body body);

au lieu de :

Observable apiCall(@Body body);

Vous pouvez obtenir l'URL en utilisant :

response.raw().request().url()

ici :
response est la réponse de Retrofit
raw est la réponse d'OkHttp
request est la requête d'OkHttp qui contient l'URL en tant que HttpUrl.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X