Java Tips: Download de Arquivo Binário (HttpClient)

Posted on agosto 1, 2011. Filed under: Java, Tips |

Estreando no blog as seção tips tem como objetivo divugar dicas práticas de programação, banco de dados e configuração de servidores. São dicas rápidas e práticas de utilização imediata. Para começar, estou disponibilizando um simples e útil código java que realiza download de um arquivo binário, como imagens, pdf, zip, etc. a partir de uma URL.

A execução abaixo irá realizar o download da imagem localizada na URL http://hc.apache.org/images/logos/httpcomponents.png no diretório /root.

O programa utiliza a lib apache commons e precisa ser instalada antes de compiliar.

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.*;

public class HttpClientDownload {

  private static String url = "http://hc.apache.org/images/logos/httpcomponents.png";
  private static String arquivoLocal = "/root/java/httpcomponents.png";

  public static void main(String[] args) {
    // Instância do HttpClient
    HttpClient client = new HttpClient();

    // Método GET
    GetMethod method = new GetMethod(url);

    try {
      // Realiza a reqiusição GET
      int statusCode = client.executeMethod(method);

      if (statusCode != HttpStatus.SC_OK) {
            System.err.println("Falha na requisição GET: " + method.getStatusLine());
      }

      // Ler o conteúdo da resposta.
      byte[] responseBody = method.getResponseBody();

      // gravar o conteúdo da resposta em arquivo, permitnido dados binários
      DataOutputStream os = new DataOutputStream(new FileOutputStream(arquivoLocal));
      os.write(responseBody);
      os.close();

    } catch (HttpException e) {
          System.err.println("Fatal protocol violation: " + e.getMessage());
          e.printStackTrace();
    } catch (IOException e) {
          System.err.println("Fatal transport error: " + e.getMessage());
          e.printStackTrace();
    } finally {
          // Libera a conexão.
          method.releaseConnection();
    }
  }
}

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: