Pergunta

Recebi um aplicativo WPF e quero baixar um arquivo.

Estou usando o System.net; E eu tenho o seguinte código:

WebClient ww = new WebClient();
ww.DownloadFileAsync(
    new Uri("http://www.sinvise.net/tester/1.jpg"), 
    AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg");

O problema é que é que não baixará o arquivo, está apenas aparecendo como arquivo de 0kb e não é baixado, não sei qual é o problema, alguém pode ajudar?

Foi útil?

Solução 3

Encontrei a resposta, eu li que o download do arquivo de downloads verifica o DNS antes de qualquer coisa, se eu usar um endereço IP, ele não faz o cheque e funciona imediatamente.

Obrigado por todos os que ajudam nisso.

Outras dicas

Que tal ouvir o DownloadFilecOmpleted evento e verificar o AsyncCompleteDeventargs.error Propriedade o evento encaminhe para o seu manipulador?

    public static void DownLoadFileInBackground(string address)
    {
        WebClient client = new WebClient();
        Uri uri = new Uri(address);
        client.DownloadFileCompleted += (sender,e)=>
                                        {
                                            //inspect e here:
                                            //e.Error
                                        };
        client.DownloadProgressChanged += (sender,e)=>
                                          {
                                              //e.ProgressPercentage
                                          };
        client.DownloadFileAsync(uri, "blabla");
    }

Alguns sites bloqueiam as solicitações que não possuem certos cabeçalhos na solicitação. Em particular, encontrei no passado o cabeçalho "agente do usuário", tente copiar um cabeçalho de uma solicitação do navegador e adicione-o ao seu webclient

WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");

Eu gostaria de acrescentar que o DownloadFileAsync Método (eu não posso falar por DownloadFile) não funciona quando você possui uma referência web para o mesmo arquivo. Ao menos essa é minha experiência. Pode ser que não seja permitido pela estrutura ou servidor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top