Obtenir de l'en-Tête de Réponse (Rénovation / OkHttp Client)
Je suis en utilisant la Rénovation de la OkHttp Client et Jackson pour la Sérialisation Json et que vous souhaitez obtenir de l'en-tête de la réponse.
Je sais que je peux prolonger la OkClient
et l'intercepter. Mais ce qui vient avant le processus de désérialisation commence.
Ce que j'ai vraiment besoin est d'obtenir l'en-tête, avec les désérialisé Objet Json.
Vous devez vous connecter pour publier un commentaire.
Avec de Rénovation 1.9.0, si vous utilisez la fonction de Rappel asynchrone version de l'interface,
Alors votre rappel recevrez un
Response
objetQui a une méthode appelée
getHeaders()
De Rénovation 2.0 interface, vous pouvez le faire avec
Call<T>
.De Rénovation 2.0 Rx soutien, vous pouvez le faire avec
Observables<Suite<T>>
Call<T>.execute()
)Observable<Result<T>>
qui vous donneresponse
comme paramètre, etresponse
a les en-têtes.Observable<Result<T>>
même avec votre version actuelle. Désolé pour l'initiale de la désinformation 🙁Observable<Result<T>>
qui a les en-têtes de trop.Response<mObject>
dans odred de lire l'en-tête. Ce que j'ai fait. J'utilise singleton, qui recueille des données d'en-tête - comme jeton et j'ai appliqué référence pour Intercepteur. Dans incterceptor je peut lire en en-tête de réponse simultanieously à l'aide deObservable<mObject>
comme réponse renvoyée. Je gère l'erreur en SubstituantonErrorResumeNext(Throwable)
dans RxJavaAdapterFactory. Chaque chose est automatique maintenant et fonctionne comme je voulais, donc préoccupations sont séparés.En Rénovation 2.0.0, vous pouvez récupérer l'en-tête comme ceci:
List<String> cookieList = headers.toMultimap().get("set-cookie");
à l'aide deforeach
parcourir la listeBeaucoup comme vous, je voulais les en-têtes le long du côté de la charge utile. J'ai besoin d'accéder à l'Etag. Il prend un peu de rétro-foo, mais vous pouvez le faire. voici ce que j'ai fait. C'est un sale échantillon afin de ne pas prendre cela comme une des meilleures pratiques de l'échantillon.