我有一个WPF应用程序,我想下载一个文件。
我正在使用System.Net;我有以下代码:
WebClient ww = new WebClient();
ww.DownloadFileAsync(
new Uri("http://www.sinvise.net/tester/1.jpg"),
AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg");
问题是,它是不是下载文件,它只是显示为0kb文件而不是下载,我不知道问题是什么,有人可以帮忙吗?
答案 0 :(得分:7)
如何监听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");
}
答案 1 :(得分:2)
某些网站会阻止请求中没有特定标头的请求。 特别是我在过去发现的是“User-Agent”标题,尝试从浏览器请求中复制标题并将其添加到WebClient中
WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
答案 2 :(得分:0)
找到答案,我读到DownloadFile会先检查DNS,如果我使用的是IP地址,它不会进行检查并立即生效。
感谢大家对此的帮助。
答案 3 :(得分:0)
我想补充一点,当您对同一文件有现有和未关闭的webrequest时,DownloadFileAsync
方法(我不能代表DownloadFile
)不起作用。至少这是我的经历。它可能是框架或服务器不允许的。