任何人都可以告诉我如何从该URL下载我的C#程序中的文件: http://www.cryptopro.ru/products/cades/plugin/get_2_0
我尝试使用WebClient.DownloadFile,但我只获取html页面而不是文件。
答案 0 :(得分:11)
如果没有合法的U / A字符串,请查看Fiddler请求失败,所以:
WebClient wb = new WebClient();
wb.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.33 Safari/537.36");
wb.DownloadFile("http://www.cryptopro.ru/products/cades/plugin/get_2_0/cadeplugin.exe", "c:\\xxx\\xxx.exe");
答案 1 :(得分:4)
我相信这会成功。
WebClient wb = new WebClient();
wb.DownloadFile("http://www.cryptopro.ru/products/cades/plugin/get_2_0/cadeplugin.exe","file.exe");
答案 2 :(得分:1)
如果您需要知道下载状态或使用凭据才能提出请求,我建议您使用此解决方案:
WebClient client = new WebClient();
Uri ur = new Uri("http://remoteserver.do/images/img.jpg");
client.Credentials = new NetworkCredential("username", "password");
client.DownloadProgressChanged += WebClientDownloadProgressChanged;
client.DownloadDataCompleted += WebClientDownloadCompleted;
client.DownloadFileAsync(ur, @"C:\path\newImage.jpg");
她就是回调的实现:
void WebClientDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine("Download status: {0}%.", e.ProgressPercentage);
}
void WebClientDownloadCompleted(object sender, DownloadDataCompletedEventArgs e)
{
Console.WriteLine("Download finished!");
}
答案 3 :(得分:0)
尝试WebClient.DownloadData
您会以byte[]
的形式得到回复,然后您可以随心所欲地做任何事情。
答案 4 :(得分:0)
有时服务器不允许您使用脚本/代码下载文件。为了解决这个问题,您需要设置用户代理标头来欺骗请求来自浏览器的服务器。使用以下代码,它的工作原理。测试好了
var webClient=new WebClient();
webClient.Headers["User-Agent"] =
"Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36";
webClient.DownloadFile("the url","path to downloaded file");
这将按预期工作,您可以下载文件。