Webclient downloadfileasync не работает
Я получил приложение WPF и хочу скачать файл.
Я использую System.Net; и у меня есть следующий код:
WebClient ww = new WebClient();
ww.DownloadFileAsync(
new Uri("http://www.sinvise.net/tester/1.jpg"),
AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg");
Проблема в том, что он не загружает файл, он просто отображается в виде файла 0 КБ и не загружается, я не знаю, в чем проблема, кто-нибудь может помочь?
4 ответа
Найдя ответ, я прочитал, что DownloadFile сначала проверяет DNS прежде всего, если я использую IP-адрес, он не выполняет проверку и сразу же работает.
Спасибо всем за помощь в этом, хотя.
Как насчет прослушивания события DownloadFileCompleted и проверки свойства AsyncCompletedEventArgs.Error, которое событие пересылает вашему обработчику?
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");
}
Некоторые сайты блокируют запросы, в заголовках которых нет определенных заголовков. В частности, я нашел в прошлом заголовок "Пользователь-агент", попробуйте скопировать заголовок из запроса браузера и добавить его в свой WebClient.
WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
Я хотел бы добавить, что DownloadFileAsync
метод (я не могу говорить за DownloadFile
) не работает, если у вас есть существующее и не закрытое веб-запрос для того же файла. По крайней мере, это мой опыт. Это может быть запрещено структурой или сервером.