1
resposta

Alterar o Cookie em cada Request

É possível sempre em um novo request mudar o cookie?, caso sim, poderia dar um norte?

    package br.com.alura.cliente;

import org.apache.http.client.fluent.Request;

public class ClienteWebService {

    public static void main(String[] args) throws Exception {

        String conteudo = Request
            .Get("https://www.google.com/")
            .addHeader("Accept", "text/html")
            .execute()
            .returnContent()
            .asString();

        System.out.println(conteudo);

    }

}
    }
1 resposta

Olá! Tudo bem?

Respondendo à sua pergunta, é possível sim alterar o cookie em cada novo request. Para isso, você pode utilizar a classe CookieStore do Apache HttpClient, que permite armazenar e gerenciar cookies em uma sessão HTTP.

Para utilizar a classe CookieStore, você precisa criar uma instância dela e adicioná-la ao seu HttpClient. Em seguida, você pode adicionar e remover cookies da CookieStore conforme necessário.

Aqui está um exemplo básico de como utilizar a CookieStore:

import org.apache.http.client.CookieStore;
import org.apache.http.client.fluent.Executor;
import org.apache.http.client.fluent.Request;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.HttpClients;

public class ClienteWebService {

    public static void main(String[] args) throws Exception {

        // Cria uma instância da CookieStore
        CookieStore cookieStore = new BasicCookieStore();

        // Cria um Executor com a CookieStore
        Executor executor = Executor.newInstance(HttpClients.custom()
                .setDefaultCookieStore(cookieStore)
                .build());

        // Faz uma requisição com o Executor
        String conteudo = executor.execute(Request
                .Get("https://www.google.com/")
                .addHeader("Accept", "text/html"))
                .returnContent()
                .asString();

        System.out.println(conteudo);

        // Adiciona um novo cookie à CookieStore
        cookieStore.addCookie(new BasicClientCookie("nome", "valor"));

        // Faz outra requisição com o Executor, agora com o novo cookie
        conteudo = executor.execute(Request
                .Get("https://www.google.com/")
                .addHeader("Accept", "text/html"))
                .returnContent()
                .asString();

        System.out.println(conteudo);

    }

}

Neste exemplo, criamos uma instância da CookieStore e a adicionamos ao Executor. Em seguida, fazemos uma requisição com o Executor, que armazena automaticamente os cookies recebidos na CookieStore.

Depois, adicionamos um novo cookie à CookieStore e fazemos outra requisição com o Executor, que agora envia o novo cookie junto com a requisição.

Espero ter ajudado e bons estudos!