Java.net.HttpCookie en Java

Requisito previo - Galletas

Muchos sitios web utilizan pequeñas cadenas de texto conocidas como cookies para almacenar el estado persistente del lado del cliente entre conexiones. Las cookies se pasan del servidor al cliente y viceversa en los encabezados HTTP de solicitudes y respuestas. Un servidor puede utilizar cookies para indicar ID de sesión, contenido del carrito de compras, credenciales de inicio de sesión, preferencias del usuario y más. Un objeto HttpCookie representa una cookie http que transporta información de estado entre el servidor y el agente de usuario. La cookie se adopta ampliamente para crear sesiones con estado. Hay 3 especificaciones de cookies http:

La clase HttpCookie puede aceptar estas 3 formas de sintaxis.

Constructor:

Crea una cookie con el nombre y valor especificados. El nombre debe contener solo caracteres alfanuméricos ASCII y cumplir con RFC 2965. Lanza una excepción IllegalArgument si el nombre no es correcto o NullPointerException si el nombre es nulo. El valor puede ser cualquier cosa que la cookie quiera almacenar.

    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étodos:

  1. analizar() : devuelve una lista de cookies analizadas a partir de la cadena del encabezado. El encabezado debe comenzar con el token set-cookie o set-cookie2 o no debe contener ningún token.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. haExpired() : Devuelve un valor booleano que indica si la cookie ha caducado o no.
        Syntax :     public boolean hasExpired()  
  3. establecerComentario() : Se utiliza para establecer una breve descripción que describa el propósito de la cookie. Se utiliza cuando se presenta la cookie al usuario.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. obtener comentario() : Devuelve la descripción de la cookie o nula si la cookie no tiene comentarios.
        Syntax :     public void getComment()  
  5. setComentarioURL() : Se utiliza para establecer una URL de comentario breve que describe el propósito de la cookie. Se utiliza cuando el navegador presenta la cookie al usuario.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getComentarioURL() : Devuelve el comentario de URL de la cookie o nulo si la cookie no tiene comentarios de URL.
        Syntax :     public String getComment()  
  7. setDescartar() : Se utiliza para establecer si el agente de usuario debe descartar esta cookie o no.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. obtenerDescartar() : Devuelve el estado de la variable de descarte establecida por el método setDiscard(). Más específicamente, devuelve verdadero si UA debe descartar esta cookie; de ​​lo contrario, es falso.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Se utiliza para especificar los puertos que puede utilizar esta cookie.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Devuelve la lista de puertos que esta cookie puede utilizar.
        Syntax :     public String getPortList()  
  11. establecerDominio() : Especifique el dominio en el que esta cookie debe ser visible. Por ejemplo, las cookies enviadas desde un servlet en bali.vacations.com normalmente no serán devueltas por el navegador a las páginas en queensland.vacations.com. Si el sitio quisiera que esto sucediera, los servlets podrían especificar cookie.setDomain(.vacations.com). Para evitar que los servidores establezcan cookies que se apliquen a hosts fuera de su dominio, el dominio especificado debe cumplir los siguientes requisitos: debe comenzar con un punto (por ejemplo, .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. obtenerDominio() : Devuelve el dominio en el que esta cookie es visible.
        Syntax :     public String getDomain()  
  13. setMaxAge() : se utiliza para establecer la edad máxima de la cookie en segundos. Especifica el tiempo máximo después de la creación de la cookie durante el cual está activa. Los valores negativos especifican que la cookie caducará tan pronto como se cierre el navegador.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Devuelve la edad máxima de la cookie.
        Syntax :     public long getMaxAge()  
  15. establecerPath() : Se utiliza para especificar la ruta al cliente en la que debe devolver la cookie. Esta cookie es visible para todas las páginas y subdirectorios de la ruta especificada. Por ejemplo, si el servidor envió la cookie desde http://ecommerce.site.com/toys/specials.html, el navegador devolverá la cookie al conectarse a http://ecommerce.site.com/to/beginners.html pero no a http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. obtenerRuta() : Devuelve la ruta establecida para esta cookie.
        Syntax :     public String getPath()  
  17. Implementación de 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. Producción
  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() : Se indica si se utilizará un protocolo seguro al enviar esta cookie. El valor predeterminado es falso.
        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. obtenerSecure() : Devuelve verdadero si esta cookie debe enviarse mediante un protocolo seguro; de lo contrario, es falso.
        Syntax :     public boolean getSecure()  
  23. obtenerNombre() : Devuelve el nombre de la cookie.
           Syntax :     public String getName()  
  24. establecerValor() : Asigna un nuevo valor a la cookie después de la inicialización.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. obtenerValor: Devuelve el valor de la cookie.
        Syntax :     public String getValue()  
  26. obtenerVersión() : Devuelve 0 si la cookie cumple con la especificación original de Netscape; 1 si la cookie cumple con el RFC 2965/2109
        Syntax :     public int getVersion()  
  27. establecerVersión() : Se utiliza para configurar la versión del protocolo de cookies que utiliza esta 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. esHttpOnly() : Devuelve verdadero si la cookie solo puede ser utilizada por http, es decir, no puede ser utilizada por lenguajes de script como JS vb, etc.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Se utiliza para establecer si esta cookie es solo http o no.
        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. coincidencias de dominio() : Función de utilidad para comprobar si el nombre de host está en el dominio o no.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. aCadena() : Construye una representación de cadena de esta cookie.
           Syntax :    public String toString()  
  32. es igual() : devuelve verdadero si dos cookies http son iguales entre sí, falso en caso contrario.
           Syntax :    public boolean equals(Object obj)  
  33. código hash() : Devuelve el código hash de esta cookie http. El resultado es la suma del valor del código hash de tres componentes importantes de esta cookie: nombre, dominio y ruta. Anula el código hash en la clase Objeto.
        Syntax :     public int hashCode()  
  34. clonar() : Crea y devuelve una copia de este objeto. Anula el método de clonación de la clase de objeto.
        Syntax :     public Object clone()  

Implementación de 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  ());      }   }   

Producción :

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

Otro ejemplo para mostrar cómo los servidores web utilizan realmente las cookies en el que imprimimos los detalles de las cookies almacenadas por 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  ());      }      }   }   

Producción :

 ------------------ 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

Referencia:

Documentación oficial de Java

Crear cuestionario