RETROFIT & amp; AUTH COOKIE
J'ai besoin de savoir comment faire pour ajouter une autorisation en-tête de cookie en rénovation. J'ai vu des conseils comme l'utilisation de la demande intercepter etc. Ci-dessous est ce que je suis en train d'essayer, mais est-ce correct? Tout d'abord j'ai déjà besoin d'un RequestAdatper pour obtenir l'id de session la première fois autour. Ce ne peut être définie par le constructeur de la demande de l'adaptateur. Mais j'avais besoin de faire une demande juste pour obtenir l'id de session dans la première place. Ai-je besoin deux autres cartes pour obtenir l'id de session et une autre après je l'ai obtenue. Ce que j'ai vraiment besoin est une méthode sur la carte pour définir le cookie après je le faire, mais il ne semble pas être une telle méthode. Cela devient gênant. Comment puis-je régler l'autorisation de cookie dans la rénovation? Je ne vois pas cela dans la FAQ ou des tutoriels.
RequestInterceptor requestInterceptor = new RequestInterceptor()
{
@Override
public void intercept(RequestFacade request) {
request.addHeader("Set-Cookie", "sessionId="+sessionIdentifier);
}
};
RestAdapter.Builder().setServer(serverURL)..setRequestIntercepter(requestIntercepter).build();
//but I don't have sessionId when this is first issued ???
source d'informationauteur user3186731
Vous devez vous connecter pour publier un commentaire.
De conserver une référence à l'intercepteur et de le traiter comme un singleton comme vous serait
RestAdapter
lui-même.Maintenant, il suffit d'appeler
setSessionId
après votre appel de l'authentification. Toutes les demandes suivantes inclure l'en-tête.Vous pouvez obtenir les cookies comme cela
Utiliser cette fonction pour définir le CookieHandler
et ensuite l'utiliser comme ceci dans votre Intercepteur de demande
L'étape 1. Analyser les en-têtes de Réponse.
Appeler cette méthode à l'intérieur de votre Rappel dans surchargée
success
méthode.L'étape 2. Écrire quelques statique de la classe ou d'un singleton pour garder les cookies et votre RequestInterceptor instance. À l'intérieur de RequestInterceptor remplacer intercepter méthode pour ajouter vos cookies à en-Tête.
Selon @sbtgE réponse, mais avec quelques corrections.
CookieHandler.getDefault()
peut être nulle, donc j'utilise CookieManager.application de la construire.gradle:
La configuration de Rénovation:
Solution Simple à l'aide de lib. compiler
com.squareup.okhttp3:okhttp-urlconnection:3.2.0
.JavaNetCookieJar jncj = new JavaNetCookieJar(CookieHandler.getDefault());
OkHttpClient.Builder().cookieJar(jncj).build();