Java.net.HttpCookie în Java

Condiție prealabilă - Cookie-uri

Multe site-uri web folosesc mici șiruri de text cunoscute sub numele de cookie-uri pentru a stoca starea persistentă la nivelul clientului între conexiuni. Cookie-urile sunt transmise de la server la client și înapoi în anteturile HTTP ale cererilor și răspunsurilor. Cookie-urile pot fi utilizate de către un server pentru a indica ID-urile de sesiune conținutul coșului de cumpărături datele de conectare preferințele utilizatorului și multe altele. Un obiect HttpCookie reprezintă un cookie http care transportă informații de stare între server și agent de utilizator. Cookie-ul este adoptat pe scară largă pentru a crea sesiuni cu stare. Există 3 specificații pentru cookie-uri http:

Clasa HttpCookie poate accepta toate aceste 3 forme de sintaxă.

Constructor:

Creează un cookie cu numele și valoarea specificate. Numele trebuie să conțină numai caractere alfanumerice ASCII și să respecte RFC 2965. Aruncă o excepție IllegalArgument dacă numele nu este corect sau NullPointerException dacă numele este nul. Valoarea poate fi orice pe care cookie-ul dorește să stocheze.

    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

Metode:

  1. parse() : returnează o listă de cookie-uri analizate din șirul antetului. antetul trebuie să înceapă cu set-cookie sau set-cookie2 token sau nu trebuie să conțină deloc niciun simbol.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. a expirat(): returnează valoarea booleană care indică dacă cookie-ul a expirat sau nu.
        Syntax :     public boolean hasExpired()  
  3. setComment() : Folosit pentru a seta o scurtă descriere care descrie scopul cookie-ului. Este folosit atunci când se prezintă cookie-ul utilizatorului.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. getComment(): Returnează descrierea cookie-ului sau null dacă cookie-ul nu are comentarii.
        Syntax :     public void getComment()  
  5. setCommentURL() : Folosit pentru a seta o adresă URL de comentariu scurtă care descrie scopul cookie-ului. Este folosit atunci când browserul prezintă cookie-ul utilizatorului.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. getCommentURL() : Returnează comentariul URL al cookie-ului sau null dacă cookie-ul nu are comentarii URL.
        Syntax :     public String getComment()  
  7. setDiscard() : Folosit pentru a seta dacă agentul utilizator ar trebui să renunțe la acest cookie sau nu.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. getDiscard() : Returnează starea variabilei de eliminare setată prin metoda setDiscard(). Mai exact, returnează true dacă UA trebuie să renunțe la acest cookie, altfel fals.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : Folosit pentru a specifica porturile pe care le poate folosi acest cookie.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : Returnează lista de porturi pe care acest cookie le poate folosi.
        Syntax :     public String getPortList()  
  11. setDomain() : Specificați domeniul în care acest cookie ar trebui să fie vizibil. De exemplu, cookie-urile trimise de la un servlet la bali.vacations.com nu ar fi în mod normal returnate de browser la paginile de la queensland.vacations.com. Dacă site-ul dorește ca acest lucru să se întâmple, servleturile ar putea specifica cookie.setDomain(.vacations.com). Pentru a împiedica serverele să seteze module cookie care se aplică gazdelor din afara domeniului lor, domeniul specificat trebuie să îndeplinească următoarele cerințe: trebuie să înceapă cu un punct (de exemplu, .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. getDomain() : Returnează domeniul în care acest cookie este vizibil.
        Syntax :     public String getDomain()  
  13. setMaxAge() : folosit pentru a seta vârsta maximă a cookie-urilor în secunde. Specifică timpul maxim după crearea cookie-ului pentru care acesta este în viață. Valorile negative specifică faptul că cookie-ul va expira de îndată ce se închide browserul.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. getMaxAge() : Returnează vârsta maximă a cookie-ului.
        Syntax :     public long getMaxAge()  
  15. setPath() : Folosit pentru a specifica calea către client la care ar trebui să returneze cookie-ul. Acest cookie este vizibil pentru toate paginile și subdirectoarele căii specificate. De exemplu, dacă serverul a trimis cookie-ul de la http://ecommerce.site.com/toys/specials.html, browserul ar trimite cookie-ul înapoi atunci când se conectează la http://ecommerce.site.com/to/beginners.html, dar nu la http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. getPath() : Returnează calea setată pentru acest cookie.
        Syntax :     public String getPath()  
  17. Implementare 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. Ieșire
  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() : Indicat dacă se utilizează un protocol securizat la trimiterea acestui cookie. Valoarea implicită este falsă.
        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(): Returnează true dacă acest cookie trebuie trimis printr-un protocol securizat, altfel fals.
        Syntax :     public boolean getSecure()  
  23. getName() : Returnează numele cookie-ului.
           Syntax :     public String getName()  
  24. setValue() : Atribuie o nouă valoare cookie-ului după inițializare.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. getValue: Returnează valoarea cookie-ului.
        Syntax :     public String getValue()  
  26. getVersion() : Returnează 0 dacă cookie-ul respectă specificația originală Netscape; 1 dacă cookie-ul respectă RFC 2965/2109
        Syntax :     public int getVersion()  
  27. setVersion() : Folosit pentru a seta versiunea protocolului cookie pe care îl folosește acest 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() : Returnează true dacă cookie-ul poate fi folosit numai de http, adică nu poate fi folosit de limbaje de scripting precum JS vb etc.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : Folosit pentru a seta dacă acest cookie este doar http sau nu.
        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. domainMatch() : Funcție de utilitate pentru a verifica dacă numele de gazdă este sau nu în domeniu.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. toString() : Construiește o reprezentare șir a acestui cookie.
           Syntax :    public String toString()  
  32. este egal() : returnează true dacă două cookie-uri http sunt egale unul cu celălalt false în caz contrar.
           Syntax :    public boolean equals(Object obj)  
  33. hashCode(): Returnează codul hash al acestui cookie http. Rezultatul este suma valorii codului hash a trei componente semnificative ale acestui cookie: domeniul numelui și calea. Înlocuiește hashCode în clasa Object.
        Syntax :     public int hashCode()  
  34. clona() : Creați și returnați o copie a acestui obiect. Ignoră metoda de clonare a clasei de obiecte.
        Syntax :     public Object clone()  

Implementare 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  ());      }   }   

Ieșire:

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

Un alt exemplu pentru a arăta modul în care cookie-urile sunt de fapt utilizate de serverele web în care tipărim detaliile cookie-urilor stocate de 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  ());      }      }   }   

Ieșire:

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

Referinţă:

Documentație oficială Java

Creați un test