Baixar arquivo de URL via Java e não Browser

5 respostas
R

Pessoal preciso de uma ajuda na seguinte questão:
tenho uma classe que baixa um arquivo de determinada URL.
Estou utilizando a classe UrlConnection e consigo baixar arquivos normalmente, porém um determinado arquivo da seguinte url :http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_lotfac.zip
não vai através da classe, e só consigo baixar via browser por que é aberta uma janela pra confirmar o download.

Queria saber se alguém tem alguma idéia de como obter esse arquivo sem precisar confimar no botao ok da janela q aparece via browser.

5 Respostas

M

poste o código java que você está tentando usar para baixar o arquivo.

só uma coisa, você quer que em uma página de uma aplicação sua ele baixe o arquivo para a máquina cliente ? ou você quer que uma classe sua mesmo, executada diretamente na máquina baixe o arquivo?

R

A exceção que dá: Server redirected too many times (20)

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/**
*

  • @author raphael
    */
    public class Principal {

    public static void main(String[] args){

    String urlName = "http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_lotfac.zip";
     
     try{
         URL url = new URL(urlName);
         
         File file = new File("arquivo.zip");
         FileWriter fo = new FileWriter(file);
         HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
         urlConnection.setDoInput(true);
         BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()) );
         
         String line = null;
         
         while((line=in.readLine())!= null){
             fo.write(line);
         }
         
         in.close();
         fo.close();
         urlConnection.disconnect();
     } catch(MalformedURLException e){
         System.out.println("Erro ao criar URL. Formato inválido.");
     } catch (IOException e){
         System.out.println(e.getMessage());
     }
    

    }

}

R

Eu quero baixar esse arquivo para minha máquina mesmo, gravando ele em um arquivo.

E

já vi alguns sites só permitirem download se enviar o header de alguma requisição anterior, se não enviar, ele vai te redirecionar para obter esse header. Pega os headers, e coloca num próximo request para ver se soluciona.

R

Bom, o sistema não é web, apenas uso a classe urlConnection para pegar o arquivo da url. Esse arquivo é gravado em minha máquina local.
Com outras urls consigo, o problema tá nessa url da loteria caixa. Queria pegar o arquivo q tem todos os resultados, mas só consgio via browser, pela classe java q fiz da um erro q execedeu o tempo limite.

Criado 29 de dezembro de 2011
Ultima resposta 30 de dez. de 2011
Respostas 5
Participantes 3