Java Tips: Lendo Cookies de Requisição com HTTPClient

Nesta dica Java, vamos demonstrar como ter acesso aos cookies definidos por determinado site após efeutar uma requisição HTTP (GET ou POST). Para isso vamos usar a lib HttpClient do Apache, conhecida como Apache HttpComponents. Esta é a nova lib do Apache para trabalhar com requisições HTTP que foi re-escrita para substituir a antiga lib Commons HttpClient.

Para maiores detalhes sobre a nova lib HttpClient, acesse: http://hc.apache.org/

Ao desenvolver determinada aplicação, tive a necessidade de manipular os cookies de uma resposta de requisição. Tive dificuldade de achar algo simples na internet que me fosse realmente útil. Após conseguir o que eu queria com um certo esforço resolvi compartilhar essa dica com vocês. Portanto, segue ele abaixo.

O código abaixo esta bem documentado e de fácil entendimento. Torço para que seja útil.

import java.io.IOException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

public class ShowCookies {

	public static void main(String[] args) {
				
		// instância da classe do client HTTP
		DefaultHttpClient client = new DefaultHttpClient();
		
		// objeto onde serão armazenados as informações relativas aos cookies 
		CookieStore cookieStore = new BasicCookieStore();

		// criação de um contexto utilizado nas requisições para que possamos acessar 
		// as informações dos cookies	
		HttpContext localContext = new BasicHttpContext();
		localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
	
		// instância o objeto HttpGet
		HttpGet httpget = new HttpGet("http://www.google.com/");
				
		try {
			// efetua a resquisição GET
			HttpResponse response = client.execute(httpget, localContext);
			
			// trabalha a resposta da requisição
			HttpEntity entity = response.getEntity();				
			if (entity != null) {
				String responseBody = EntityUtils.toString(entity);
				
				// exibe o conteúdo do corpo da resposta da requisição GET
				System.out.println(responseBody);
				
				// exibe os conteúdo dos cookies definidos pelo domínio
				List<Cookie> cookies = cookieStore.getCookies();
				for(Cookie cookie : cookies) {
					System.out.println("Cookie: " + cookie.getName() + "=" + cookie.getValue());
				}		
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
			
		} catch (IOException e) {
			e.printStackTrace();
			
		}
	}
}
Please follow and like us:

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: