Ajouter des cookies pour rénover 2 demande
J'ai besoin d'ajouter des cookies avec de rénovation 2.0. Si je comprends correcte, des cookies - les mêmes que les en-têtes. ces cookies doivent être ajoutés:
private HashMap<String, String> cookies = new HashMap();
cookies.put("sessionid", "sessionId");
cookies.put("token", "token");
ce un travail avec Jsoup lib:
String json = Jsoup.connect(apiURL + "/link")
.cookies(cookies)
.ignoreHttpErrors(true)
.ignoreContentType(true)
.execute()
.body();
voici mon code avec la rénovation de la demande:
@GET("link")
Call<CbGet> getData(@Header("sessionid") String sessionId, @Header("token") String token);
mais il ne fonctionne pas...
j'obtiens une erreur 403 du code, donc il n'y a pas de cookies dans la demande...
une idée?
OriginalL'auteur Stan Malcolm | 2016-07-17
Vous devez vous connecter pour publier un commentaire.
Tout d'abord: le cookie n'est pas la même chose qu'un en-tête. Cookie est un en-tête HTTP spécial nommé Cookie suivies de la liste des paires de clés et de valeurs (séparées par des ";"). Quelque chose comme:
Depuis vous ne pouvez pas définir de multiples Cookie en-têtes dans la même demande vous n'êtes pas en mesure d'utiliser deux @en-Tête annotations pour séparer les valeurs (sessionid et jeton dans votre exemple). Je pense très hacky solution de contournement:
Vous changez votre méthode pour envoyer des id de session et un jeton dans une seule chaîne. Dans ce cas, vous devez générer manuellement les cookies chaîne à l'avance. Dans votre cas sessionIdAndToken objet Chaîne de caractères doit être égal à "sessionid=here_goes_sessionid; token=here_goes_token"
La bonne solution est de définir des cookies par l'ajout de OkHttp's (bibliothèque de Rénovation utilise pour la fabrication de sous-jacents http appels) intercepteur de demande. Vous pouvez voir la solution ou l'ajout d'en-têtes personnalisés ici.
OriginalL'auteur Alexander Mironov
pour ajouter un en-tête de cookie à okhttp en-têtes de requête , ajouter ceci dans le Intercepteur:
request= request.newBuilder().addHeader("Cookie", sessionIdAndToken).build();
Ref:https://github.com/square/okhttp/wiki/Interceptors comme mentionné par @Alexandre Mironov
Exemple complet de code ici: Espérons qu'il vous aide
OriginalL'auteur Rajesh Mbm
API de service web exemple ajouter un en-Tête
lorsque vous vous connectez au système d'enregistrer des cookies sur votre locale sur la Réponse comme
et à chaque service, vous devez être autorisées envoyer vos cookies , obtenir de sharepreference et l'envoyer avec votre service web
OriginalL'auteur Sam
pourquoi pas à l'aide de la cookieJar option?
OriginalL'auteur Markus Schulz