Java Tips: Download de arquivo usando Apache HttpComponents

Posted on junho 3, 2012. Filed under: Java, Tips | Tags:, , |

Introdução

Já vimos em um artigo anterior como realizar o download de arquivos binários através de HTTP usando a biblioteca Commons HttpClient do Apache. O Commons HttpClient foi descontinuado já à algum tempo e substituído pelo projeto Apache HttpComponents que promete melhor perfomance e mais flexibilidade. Portanto neste artigo vamos demonstrar como realizar o download de arquivos através de http usando a biblioteca HttpComponents.

Segue abaixo o código fonte:

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

// definição da classe HttpDownload 
public class HttpDownload {
	private final HttpClient httpclient;
	
	public static void main(String[] args) {
		// instanciando e usando a classe HttpDownload 
		HttpDownload httpDownload = new HttpDownload(new DefaultHttpClient());
		
		// fazendo o download do logotipo da google e salvando em diretório local 
		httpDownload.downloadByGet("http://www.google.com.br/images/srpr/logo3w.png", "/tmp/logo-google.png");
	}
	
	// construtor 
	public HttpDownload(HttpClient httpclient) {
		this.httpclient = httpclient;
	}
	
	// método que realiza download de arquivo via método GET 
	public void downloadByGet(String URL, String path) {
		HttpGet httpget = new HttpGet(URL);
		try {
			HttpResponse response = httpclient.execute(httpget);
			HttpEntity entity = response.getEntity();
								
			if (entity != null) {
				/* salvar arquivo no disco */
				java.io.FileOutputStream fos = new java.io.FileOutputStream(path);
			    entity.writeTo(fos);
			    fos.close();
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
Ler Post Completo | Make a Comment ( 5 so far )

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 )

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

%d blogueiros gostam disto: