Apache HttpClient - Gerenciamento de Cookies

Cookies são arquivos de texto armazenados no computador cliente e são mantidos para diversos fins de rastreamento de informações.

HttpClient fornece suporte para cookies que você pode criar e gerenciar cookies.

Criação de um cookie

Siga as etapas fornecidas abaixo para criar um cookie usando a biblioteca HttpClient.

Etapa 1 - Criar objeto Cookiestore

o CookieStoreinterface representa o armazenamento abstrato de objetos Cookie. Você pode criar um armazenamento de cookies instanciando oBasicCookieStore classe, uma implementação padrão desta interface.

//Creating the CookieStore object
CookieStore cookieStore = new BasicCookieStore();

Etapa 2 - Criar objeto ClientCookie

Além das funcionalidades de um cookie, ClientCookie pode obter os cookies originais no servidor. Você pode criar um cookie de cliente instanciando oBasicClientCookieclasse. Para o construtor desta classe, você precisa passar o par de valores-chave que deseja armazenar naquele cookie específico.

//Creating client cookie
BasicClientCookie clientCookie = new BasicClientCookie("name","Raju");

Etapa 3 - Definir valores para o cookie

Para um cookie de cliente, você pode definir / remover caminho, valor, versão, data de validade, domínio, comentário e atributo usando os respectivos métodos.

Calendar myCal = new GregorianCalendar(2018, 9, 26);
Date expiryDate = myCal.getTime();
clientcookie.setExpiryDate(expiryDate);
clientcookie.setPath("/");
clientcookie.setSecure(true);
clientcookie.setValue("25");
clientcookie.setVersion(5);

Etapa 4 - Adicionar cookie ao armazenamento de cookies

Você pode adicionar cookies ao armazenamento de cookies usando o addCookie() método do BasicCookieStore classe.

Adicione os cookies necessários ao Cookiestore.

//Adding the created cookies to cookie store
cookiestore.addCookie(clientcookie);

Exemplo

O exemplo a seguir demonstra como criar cookies e adicioná-los a um armazenamento de cookies. Aqui, criamos um armazenamento de cookies, vários cookies, definindo os valores de domínio e caminho, e os adicionamos ao armazenamento de cookies.

import org.apache.http.client.CookieStore;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.cookie.BasicClientCookie;

public class CookieHandlingExample {
   
   public static void main(String args[]) throws Exception{
      
      //Creating the CookieStore object
      CookieStore cookiestore = new BasicCookieStore();
 
      //Creating client cookies
      BasicClientCookie clientcookie1 = new BasicClientCookie("name","Raju");
      BasicClientCookie clientcookie2 = new BasicClientCookie("age","28");
      BasicClientCookie clientcookie3 = new BasicClientCookie("place","Hyderabad");

      //Setting domains and paths to the created cookies
      clientcookie1.setDomain(".sample.com");
      clientcookie2.setDomain(".sample.com");
      clientcookie3.setDomain(".sample.com");

      clientcookie1.setPath("/");
      clientcookie2.setPath("/");
      clientcookie3.setPath("/");
 
      //Adding the created cookies to cookie store
      cookiestore.addCookie(clientcookie1);
      cookiestore.addCookie(clientcookie2);
      cookiestore.addCookie(clientcookie3);
   }
}

Recuperando um cookie

Você pode obter os cookies adicionados a uma loja de cookies usando getCookies() método do asicCookieStoreclasse. Este método retorna uma lista que contém todos os cookies no armazenamento de cookies.

Você pode imprimir o conteúdo de uma loja de cookies usando o Iterator conforme mostrado abaixo -

//Retrieving the cookies
List list = cookieStore.getCookies();

//Creating an iterator to the obtained list
Iterator it = list.iterator();
while(it.hasNext()) {
   System.out.println(it.next());
}

Exemplo

O exemplo a seguir demonstra como recuperar cookies de um armazenamento de cookies. Aqui, estamos adicionando vários cookies a um armazenamento de cookies e os recuperamos de volta.

import org.apache.http.client.CookieStore;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.cookie.BasicClientCookie;

public class CookieHandlingExample {
 
   public static void main(String args[]) throws Exception{
      
      //Creating the CookieStore object
      CookieStore cookiestore = new BasicCookieStore();
      
      //Creating client cookies
      BasicClientCookie clientcookie1 = new BasicClientCookie("name","Raju");
      BasicClientCookie clientcookie2 = new BasicClientCookie("age","28");
      BasicClientCookie clientcookie3 = new BasicClientCookie("place","Hyderabad");

      //Setting domains and paths to the created cookies
      clientcookie1.setDomain(".sample.com");
      clientcookie2.setDomain(".sample.com");
      clientcookie3.setDomain(".sample.com");

      clientcookie1.setPath("/");
      clientcookie2.setPath("/");
      clientcookie3.setPath("/");
 
      //Adding the created cookies to cookie store
      cookiestore.addCookie(clientcookie1);
      cookiestore.addCookie(clientcookie2);
      cookiestore.addCookie(clientcookie3);
   }
}

Resultado

Ao ser executado, este programa gera a seguinte saída -

[version: 0][name: age][value: 28][domain: .sample.com][path: /][expiry: null]
[version: 0][name: name][value: Raju][domain: my.example.com][path: /][expiry:
null]
[version: 0][name: place][value: Hyderabad][domain: .sample.com][path:
/][expiry: null]