Archive for fevereiro \20\-02:00 2012

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();
			
		}
	}
}
Ler Post Completo | Make a Comment ( None so far )

Java Tips: Operações com JTable

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

Neste artigo reuni algumas operações úteis realizadas com o componente JTable do Java. Vamos à elas:

  • Instanciando um JTable, já inserindo dentro de um JScroll, que desabilita o usuário poder editar suas células:
int linhas = 10;
int colunas = 2;
JTable table = new JTable(linhas, colunas) {
    public boolean isCellEditable(int rowIndex, int vColIndex) {
             return false;
    }
};
JScrollPane scrollPane = new JScrollPane(table);
  • Bloqueia o usuário de redimensionar as colunas da tabela:
table.getTableHeader().setResizingAllowed(false);
  • Bloqueia o usuário de trocar a posição das colunas via drap and drop.
table.getTableHeader().setReorderingAllowed(false);
  • Alterando o nome das duas primeiras colunas da tabela dinâmicamente:
table.getColumnModel().getColumn(0).setHeaderValue("Coluna 1");
table.getColumnModel().getColumn(1).setHeaderValue("Coluna 2");
  • Definindo um tamanho fixo para largura das duas primeiras colunas:
table.getColumnModel().getColumn(0).setPreferredWidth(115);
table.getColumnModel().getColumn(1).setPreferredWidth(661);
  • Desativando o auto redimensionamento da tabela:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  • Permite apenas seleção simples (somente 1 linha):
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  • Tratando evento de dois clicks do mouse em cima de uma linha da abela:
table.addMouseListener(new MouseAdapter() {
	   public void mouseClicked(MouseEvent e) {
	       if (e.getClickCount() == 2) {
	           JTable target = (JTable)e.getSource();
	           int linha = target.getSelectedRow(); // linha selecionada
	           int coluna = target.getSelectedColumn(); // coluna selecionada

	           System.out.println("Linha: " + linha);
	           System.out.println("Coluna: " + coluna);
	       }
	   } 
});

Espero que essas dicas possam ajudar você de alguma forma. Todas elas foram úteis para mim em algum momento, portanto achei importante compartilhar.

Mais dicas

Java Tips: Operações com JTable parte 2
Java Tips: Operações com JTable parte 3

Ler Post Completo | Make a Comment ( None so far )

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

%d blogueiros gostam disto: