Java.net.HttpCookie en Java

Prérequis - Cookies

De nombreux sites Web utilisent de petites chaînes de texte appelées cookies pour stocker l'état persistant côté client entre les connexions. Les cookies sont transmis du serveur au client et inversement dans les en-têtes HTTP des requêtes et des réponses. Les cookies peuvent être utilisés par un serveur pour indiquer les identifiants de session, le contenu du panier, les identifiants de connexion, les préférences de l'utilisateur, etc. Un objet HttpCookie représente un cookie http qui transporte des informations d'état entre le serveur et l'agent utilisateur. Les cookies sont largement adoptés pour créer des sessions avec état. Il existe 3 spécifications de cookies http :

La classe HttpCookie peut accepter toutes ces 3 formes de syntaxe.

Constructeur :

Crée un cookie avec le nom et la valeur spécifiés. Le nom doit contenir uniquement des caractères alphanumériques ASCII et être conforme à la RFC 2965. Il lève une exception IllegalArgument si le nom n'est pas correct ou NullPointerException si le nom est nul. La valeur peut être n'importe quel cookie que vous souhaitez stocker.

    Syntax :     public HttpCookie(String name   
String value)
Parameters :
name : name of cookie
value : value of cookie
Throws :
IllegalArgumentException : if name does not conform to RFC2965
NullPointerException : if name is null

Méthodes :

  1. analyser() : renvoie une liste de cookies analysés à partir de la chaîne d'en-tête. l'en-tête doit commencer par le jeton set-cookie ou set-cookie2 ou ne doit contenir aucun jeton.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. hasExpired() : renvoie une valeur booléenne indiquant si le cookie a expiré ou non.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Utilisé pour définir une brève description décrivant le but du cookie. Il est utilisé lors de la présentation du cookie à l'utilisateur.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment() : Renvoie la description du cookie ou null si le cookie n'a pas de commentaires.
        Syntax :     public void getComment()  
  5. setCommentURL() : Utilisé pour définir une courte URL de commentaire décrivant le but du cookie. Il est utilisé lorsque le navigateur présente le cookie à l'utilisateur.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Renvoie le commentaire URL du cookie ou null si le cookie n'a pas de commentaires URL.
        Syntax :     public String getComment()  
  7. setDiscard() : Utilisé pour définir si l'agent utilisateur doit supprimer ce cookie ou non.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : Renvoie l'état de la variable de suppression définie par la méthode setDiscard(). Plus spécifiquement, renvoie vrai si UA doit supprimer ce cookie, sinon faux.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Utilisé pour spécifier les ports que ce cookie peut utiliser.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Renvoie la liste des ports que ce cookie peut utiliser.
        Syntax :     public String getPortList()  
  11. setDomain() : Précisez le domaine dans lequel ce cookie doit être visible. Par exemple, les cookies envoyés depuis un servlet sur bali.vacations.com ne seraient normalement pas renvoyés par le navigateur vers les pages de queensland.vacations.com. Si le site souhaitait que cela se produise, les servlets pourraient spécifier cookie.setDomain(.vacations.com). Pour empêcher les serveurs de définir des cookies qui s'appliquent à des hôtes en dehors de leur domaine, le domaine spécifié doit répondre aux exigences suivantes : il doit commencer par un point (par exemple .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Renvoie le domaine dans lequel ce cookie est visible.
        Syntax :     public String getDomain()  
  13. setMaxAge() : utilisé pour définir l’âge maximum du cookie en secondes. Il précise la durée maximale après création du cookie pendant laquelle il est vivant. Les valeurs négatives spécifient que le cookie expirera dès la fermeture du navigateur.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Renvoie l'âge maximum du cookie.
        Syntax :     public long getMaxAge()  
  15. setPath() : Utilisé pour spécifier le chemin d'accès au client auquel il doit renvoyer le cookie. Ce cookie est visible par toutes les pages et sous-répertoires du chemin spécifié. Par exemple, si le serveur envoyait le cookie depuis http://ecommerce.site.com/toys/specials.html, le navigateur renverrait le cookie lors de la connexion à http://ecommerce.site.com/to/beginners.html mais pas à http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : Renvoie le chemin défini pour ce cookie.
        Syntax :     public String getPath()  
  17. Implémentation Java :
  18. Java
       // Java Program to illustrate various   // methods of java.net.HttpCookie class   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setComment() method      cookie  .  setComment  (  'Just for explanation'  );      // getComment() method      System  .  out  .  println  (  'Comment : '     +     cookie  .  getComment  ());      // setCommentURL() method      cookie  .  setCommentURL  (  '192.168.1.1'  );      // getCommentURL() method      System  .  out  .  println  (  'CommentURL : '     +     cookie  .  getCommentURL  ());      // setDiscard() method      cookie  .  setDiscard  (  true  );      // getDiscard() method      System  .  out  .  println  (  'Discard : '     +     cookie  .  getDiscard  ());      // setPortlist() method      cookie  .  setPortlist  (  '10018520'  );      // getPortList() method      System  .  out  .  println  (  'Ports: '     +     cookie  .  getPortlist  ());      // setDomain() method      cookie  .  setDomain  (  '.localhost.com'  );      // getDomain() method      System  .  out  .  println  (  'Domain : '     +     cookie  .  getDomain  ());      // setMaxAge() method      cookie  .  setMaxAge  (  3600  );      // getMaxAge() method      System  .  out  .  println  (  'Max Age : '     +     cookie  .  getMaxAge  ());      // setPath() method      cookie  .  setPath  (  '192.168.1.1/admin/index.html'  );      // getPath() method      System  .  out  .  println  (  'Path: '     +     cookie  .  getPath  ());      }   }   
  19. Sortir
  20.  Comment : Just for explanation   
    CommentURL : 192.168.1.1
    Discard : true
    Ports: 10018520
    Domain : .localhost.com
    Max Age : 3600
    Path: 192.168.1.1/admin/index.html
  21. setSecure() : Indiqué si le protocole sécurisé doit être utilisé lors de l'envoi de ce cookie. La valeur par défaut est fausse.
        Syntax :     public void setSecure(boolean secure)   
    Parameters:
    secure - If true the cookie can only be sent over a secure protocol like https.
    If false it can be sent over any protocol.
  22. getSecure() : Renvoie vrai si ce cookie doit être envoyé par un protocole sécurisé sinon faux.
        Syntax :     public boolean getSecure()  
  23. getName() : Renvoie le nom du cookie.
           Syntax :     public String getName()  
  24. setValue() : Attribue une nouvelle valeur au cookie après l'initialisation.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. obtenirValeur : Renvoie la valeur du cookie.
        Syntax :     public String getValue()  
  26. getVersion() : Renvoie 0 si le cookie est conforme à la spécification originale de Netscape ; 1 si le cookie est conforme à la RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion() : Utilisé pour définir la version du protocole de cookie utilisé par ce cookie.
        Syntax :    public void setVersion(int v)   
    throws IllegalArgumentException
    Parameters :
    v - 0 for original Netscape specification; 1 for RFC 2965/2109
    Throws :
    IllegalArgumentException - if v is neither 0 nor 1
  28. isHttpOnly() : Renvoie vrai si le cookie ne peut être utilisé que par http, c'est-à-dire qu'il ne peut pas être utilisé par des langages de script comme JS vb, etc.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Utilisé pour définir si ce cookie est uniquement http ou non.
        Syntax :     public void setHttpOnly(boolean httpOnly)   
    Parameters :
    httpOnly - if true make the cookie HTTP only i.e. only visible as part
    of an HTTP request.
  30. domainMatches() : Fonction utilitaire pour vérifier si le nom d'hôte est dans le domaine ou non.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Construit une représentation sous forme de chaîne de ce cookie.
           Syntax :    public String toString()  
  32. est égal() : renvoie true si deux cookies http sont égaux, false sinon.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode() : Renvoie le code de hachage de ce cookie http. Le résultat est la somme des valeurs de code de hachage de trois composants importants de ce cookie : le nom de domaine et le chemin. Remplace hashCode dans la classe Object.
        Syntax :     public int hashCode()  
  34. clone() : Créez et renvoyez une copie de cet objet. Remplace la méthode de clonage de la classe d'objet.
        Syntax :     public Object clone()  

Implémentation Java :

Java
   // Java Program to illustrate various   // methods of java.net.HttpCookie class   import     java.net.HttpCookie  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setSecure() method      cookie  .  setSecure  (  true  );      // getSecure() method      System  .  out  .  println  (  'Secure : '     +     cookie  .  getSecure  ());      // getName() method      System  .  out  .  println  (  'Name : '     +     cookie  .  getName  ());      // setValue() method : can be used to modify value of cookie.      cookie  .  setValue  (  '2'  );      // getvalue() method      System  .  out  .  println  (  'Value : '     +     cookie  .  getValue  ());      // setVersion() method      cookie  .  setVersion  (  1  );      // getVersion() method      System  .  out  .  println  (  'Version : '     +     cookie  .  getVersion  ());      // setHttPonly() method      cookie  .  setHttpOnly  (  true  );      // isHttpOnly() method      System  .  out  .  println  (  'is HTTP only : '     +     cookie  .  isHttpOnly  ());      // toString() method      System  .  out  .  println  (  'toString : '     +     cookie  .  toString  ());      // hashcode() method      System  .  out  .  println  (  'Hashcode : '     +     cookie  .  hashCode  ());      }   }   

Sortir :

 Secure : true   
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432

Un autre exemple pour montrer comment les cookies sont réellement utilisés par les serveurs Web dans lesquels nous imprimons les détails des cookies stockés par www.facebook.com

Java
   import     java.io.IOException  ;   import     java.net.CookieHandler  ;   import     java.net.CookieManager  ;   import     java.net.CookieStore  ;   import     java.net.HttpCookie  ;   import     java.net.URL  ;   import     java.net.URLConnection  ;   import     java.util.List  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )     throws     IOException         {      String     urlString     =     'https://www.facebook.com/'  ;      // Create a default system-wide CookieManager      CookieManager     cookieManager     =     new     CookieManager  ();      CookieHandler  .  setDefault  (  cookieManager  );      // Open a connection for the given URL      URL     url     =     new     URL  (  urlString  );      URLConnection     urlConnection     =     url  .  openConnection  ();      urlConnection  .  getContent  ();      // Get CookieStore which is the default internal in-memory      CookieStore     cookieStore     =     cookieManager  .  getCookieStore  ();      // Retrieve all stored HttpCookies from CookieStore      List   <  HttpCookie  >     cookies     =     cookieStore  .  getCookies  ();      int     cookieIdx     =     0  ;      // Iterate HttpCookie object      for     (  HttpCookie     ck     :     cookies  )     {      System  .  out  .  println  (  '------ Cookie.'     +     ++  cookieIdx     +     ' -------'  );      // Get the cookie name      System  .  out  .  println  (  'Cookie name: '     +     ck  .  getName  ());      // Get the domain set for the cookie      System  .  out  .  println  (  'Domain: '     +     ck  .  getDomain  ());      // Get the max age of the cookie      System  .  out  .  println  (  'Max age: '     +     ck  .  getMaxAge  ());      // Get the path of the server      System  .  out  .  println  (  'Server path: '     +     ck  .  getPath  ());      // Get boolean if the cookie is being restricted to a secure      // protocol      System  .  out  .  println  (  'Is secured: '     +     ck  .  getSecure  ());      // Gets the value of the cookie      System  .  out  .  println  (  'Cookie value: '     +     ck  .  getValue  ());      // Gets the version of the protocol with which the given cookie is      // related.      System  .  out  .  println  (  'Cookie protocol version: '     +     ck  .  getVersion  ());      }      }   }   

Sortir :

 ------------------ Cookie.1 ------------------   
Cookie name: fr
Domain: .facebook.com
Max age: 7775999
Server path: /
Is secured: true
Cookie value: 0Xj7tBSsWlmtXPo92..BZFC8G.qC.AAA.0.0.BZFC8G.AWUwiIgM
Cookie protocol version: 0

Référence:

Documentation Java officielle

Créer un quiz