Java.net.HttpCookie em Java
Pré-requisito - Biscoitos
Muitos sites usam pequenas sequências de texto conhecidas como cookies para armazenar o estado persistente do lado do cliente entre as conexões. Os cookies são passados do servidor para o cliente e vice-versa nos cabeçalhos HTTP de solicitações e respostas. Os cookies podem ser usados por um servidor para indicar IDs de sessão, conteúdo do carrinho de compras, credenciais de login, preferências do usuário e muito mais. Um objeto HttpCookie representa um cookie http que transporta informações de estado entre o servidor e o agente do usuário. O cookie é amplamente adotado para criar sessões com estado. Existem 3 especificações de cookies http:
A classe HttpCookie pode aceitar todas essas 3 formas de sintaxe.
Construtor:
Cria um cookie com o nome e valor especificados. O nome deve conter apenas caracteres alfanuméricos ASCII e estar em conformidade com RFC 2965. Ele lança uma exceção IllegalArgument se o nome não estiver correto ou NullPointerException se o nome for nulo. O valor pode ser qualquer coisa que o cookie queira armazenar.
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:
- analisar() : retorna uma lista de cookies analisados a partir da string do cabeçalho. o cabeçalho deve começar com o token set-cookie ou set-cookie2 ou não deve conter nenhum token.
Syntax : public static List parse(String header)
Parameters :
header : String to be parsed as cookies- hasExpired() : retorna um valor booleano que indica se o cookie expirou ou não.
Syntax : public boolean hasExpired()- setComment(): Usado para definir uma breve descrição da finalidade do cookie. É utilizado para apresentar o cookie ao usuário.
Syntax : public void setComment(String purpose)
Parameters :
purpose : purpose of cookie- getComment() : Retorna a descrição do cookie ou nulo se o cookie não tiver comentários.
Syntax : public void getComment()- setCommentURL(): Usado para definir um breve URL de comentário descrevendo a finalidade do cookie. É usado quando o navegador apresenta o cookie ao usuário.
Syntax : public void setCommentURL(String purpose)
Parameters :
purpose : purpose of cookie- getCommentURL(): Retorna o comentário de URL do cookie ou nulo se o cookie não tiver comentários de URL.
Syntax : public String getComment()- setDiscard(): Usado para definir se o agente do usuário deve descartar este cookie ou não.
Syntax : public void setDiscard(Boolean discard)
Parameters :
discard : true if UA should discard otherwise false- getDiscard(): Retorna o estado da variável de descarte definido pelo método setDiscard(). Mais especificamente, retorna verdadeiro se o UA descartar este cookie, caso contrário, será falso.
Syntax : public Boolean getDiscard()- setPortList(): Usado para especificar as portas que este cookie pode usar.
Syntax : public void setPortList(String portList)
Parameters :
portList : String of comma separated digits specifying the ports.- getPortList() : Retorna a lista de portas que este cookie pode usar.
Syntax : public String getPortList()- setDomínio() : Especifique o domínio no qual este cookie deve estar visível. Por exemplo, cookies enviados de um servlet em bali.vacations.com normalmente não seriam retornados pelo navegador para páginas em queensland.vacations.com. Se o site quisesse que isso acontecesse, os servlets poderiam especificar cookie.setDomain(.vacations.com). Para evitar que os servidores configurem cookies que se aplicam a hosts fora do seu domínio, o domínio especificado deve atender aos seguintes requisitos: deve começar com um ponto (por exemplo, .coreservlets.com).
Syntax : public void setDomain(String domain)
Parameters :
domain : String representing the domain in which this cookie is visible- getDomínio() : Retorna o domínio no qual este cookie está visível.
Syntax : public String getDomain()- setMaxAge(): usado para definir a idade máxima do cookie em segundos. Especifica o tempo máximo após a criação do cookie durante o qual ele permanece ativo. Valores negativos especificam que o cookie expirará assim que o navegador for encerrado.
Syntax : public void setMaxAge(long age)
Parameters :
age : Max survive time in seconds- getMaxAge() : Retorna a idade máxima do cookie.
Syntax : public long getMaxAge()- setPath(): Usado para especificar o caminho para o cliente no qual o cookie deve ser retornado. Este cookie é visível para todas as páginas e subdiretórios do caminho especificado. Por exemplo, se o servidor enviasse o cookie de http://ecommerce.site.com/toys/specials.html, o navegador enviaria o cookie de volta ao se conectar a http://ecommerce.site.com/to/beginners.html, mas não a http://ecommerce.site.com/c/classic.html.
Syntax : public void setPath(String uri)
Parameters :
uri - a String specifying a path- getPath(): Retorna o caminho definido para este cookie.
Syntax : public String getPath()- Implementação 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 ()); } }- Saída
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() : Indicado se o protocolo seguro será usado durante o envio deste cookie. O valor padrão é 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.- getSecure() : Retorna verdadeiro se este cookie precisar ser enviado por um protocolo seguro, caso contrário, será falso.
Syntax : public boolean getSecure()- getNome() : Retorna o nome do cookie.
Syntax : public String getName()- setValor(): Atribui um novo valor ao cookie após a inicialização.
Syntax : public void setValue(String newValue)
Parameters :
newValue - a String specifying the new value- obterValor: Retorna o valor do cookie.
Syntax : public String getValue()- getVersão() : Retorna 0 se o cookie estiver em conformidade com a especificação original do Netscape; 1 se o cookie estiver em conformidade com RFC 2965/2109
Syntax : public int getVersion()- setVersão(): Usado para definir a versão do protocolo de cookies que este cookie utiliza.
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- isHttpOnly(): Retorna verdadeiro se o cookie só puder ser usado por http, ou seja, não pode ser usado por linguagens de script como JS vb etc.
Syntax : public boolean isHttpOnly()- setHttpOnly(): Usado para definir se este cookie é apenas http ou não.
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.- domínioMatches() : Função utilitária para verificar se o nome do host está no domínio ou não.
Syntax : public static boolean domainMatches(String domain
String host)
Parameters :
domain : domain to check hostname with
host : host to check- toString(): Constrói uma representação em cadeia deste cookie.
Syntax : public String toString()- igual(): retorna verdadeiro se dois cookies http forem iguais, caso contrário, falso.
Syntax : public boolean equals(Object obj)- hashCode(): Retorna o código hash deste cookie http. O resultado é a soma do valor do código hash de três componentes significativos deste cookie: nome, domínio e caminho. Substitui hashCode na classe Object.
Syntax : public int hashCode()- clonar(): Crie e retorne uma cópia deste objeto. Substitui o método clone da classe de objeto.
Syntax : public Object clone()Implementação 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 ()); } }Saída :
Secure : true
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432Outro exemplo para mostrar como os cookies são realmente utilizados pelos servidores Web nos quais imprimimos os detalhes dos cookies armazenados 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 ()); } } }Saída :
------------------ 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: 0Referência:
Documentação oficial JavaCriar questionário