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!