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 nullMétodos:
- 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- haExpired() : Devuelve un valor booleano que indica si la cookie ha caducado o no.
Syntax : public boolean hasExpired()- 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- obtener comentario() : Devuelve la descripción de la cookie o nula si la cookie no tiene comentarios.
Syntax : public void getComment()- 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- getComentarioURL() : Devuelve el comentario de URL de la cookie o nulo si la cookie no tiene comentarios de URL.
Syntax : public String getComment()- 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- 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()- 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.- getPortList() : Devuelve la lista de puertos que esta cookie puede utilizar.
Syntax : public String getPortList()- 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- obtenerDominio() : Devuelve el dominio en el que esta cookie es visible.
Syntax : public String getDomain()- 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- getMaxAge() : Devuelve la edad máxima de la cookie.
Syntax : public long getMaxAge()- 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- obtenerRuta() : Devuelve la ruta establecida para esta cookie.
Syntax : public String getPath()- Implementación de Java:
- 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 ()); } }- Producción
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- 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.- obtenerSecure() : Devuelve verdadero si esta cookie debe enviarse mediante un protocolo seguro; de lo contrario, es falso.
Syntax : public boolean getSecure()- obtenerNombre() : Devuelve el nombre de la cookie.
Syntax : public String getName()- 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- obtenerValor: Devuelve el valor de la cookie.
Syntax : public String getValue()- 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()- 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- 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()- 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.- 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- aCadena() : Construye una representación de cadena de esta cookie.
Syntax : public String toString()- es igual() : devuelve verdadero si dos cookies http son iguales entre sí, falso en caso contrario.
Syntax : public boolean equals(Object obj)- 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()- 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 : 97440432Otro 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
Javaimport 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: 0Referencia:
Documentación oficial de JavaCrear cuestionario