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

Posted on fevereiro 20, 2012. Filed under: Java, Tips | Tags:, , , , |

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

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: