Ajouter un cookie à la demande du client OkHttp
J'ai donc commencé à utiliser Okhttp 3 et la plupart des exemples sur le web parlent les anciennes versions
J'ai besoin d'ajouter un cookie à la OkHttp demandes des clients, comment est-il fait avec OkHttp 3?
Dans mon cas, je veux simplement statiquement l'ajouter à des appels de client sans le recevoir à partir du serveur
- Vous avez besoin d'être plus précis sur ce que vous essayez de faire. Peut-être un peu de code?
- J'ai besoin d'envoyer http (get post mis) tout en l'assortissant de cookie à la demande. en Java par exemple sa fait comme ceci: URL url = new URL("google.com:80">); URLConnection conn = url.openConnection(); conn.setRequestProperty("Cookie", "nom1=valeur1; nom2=valeur2"); conn.connect();
Vous devez vous connecter pour publier un commentaire.
Il y a 2 façons de procéder:
ou tout simplement
J'ai le sentiment que la deuxième suggestion est ce que vous avez besoin.
Vous pouvez trouver ici un exemple de travail.
Si vous avez besoin de définir un cookie d'une seule demande, vous pouvez simplement ajouter l'en-tête:
Sinon, si vous voulez lire des cookies retourné par le serveur et de les joindre à d'autres demandes, vous aurez besoin d'un
CookieJar
. Pour Android, vous pouvez utiliser le PersistentCookieJar bibliothèque qui gère les cookies et les enregistre dans la mise en commun des préférences:J'ai eu le même besoin, j'ai fait ma propre bibliothèque.
Vous pouvez force créer des cookies comme ça avec OkHttp3CookieHelper sur https://github.com/riversun/okhttp3-cookie-helper .
Gradle
Maven
Je pense une meilleure façon de le faire est d'ajouter le cookie à la cookieJar. OkHttp ensuite ajouter automatiquement les cookies à la demande avec un intercepteur: https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/internal/http/BridgeInterceptor.java
Je n'ai pas essayé ce code, mais il devrait fonctionner.
Vous devez définir les en-têtes dans la déclaration d'interface, comme suit: Appel de connexion(@Header("Cookie") String idsession...)