WebClient DownloadFileasync não está funcionando
-
21-09-2019 - |
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?
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.