使用C#从WebForm下载文件

本文关键字:下载 文件 WebForm 使用 | 更新日期: 2023-09-27 18:26:08

我需要从网站下载一个文件(不是我写的)。我有一个有效的用户名/密码来访问它,我可以手动访问。但我想创建一个自动过程(用C#)来定期下载它。

我必须手动登录,浏览到下载页面,选择一些组合框,然后单击"下载"。此链接执行回发并返回请求的文件。

我认为我应该使用WebClient.DownloadFile,但我不知道如何传递所有必要的数据并以正确的方式请求回发。

使用C#从WebForm下载文件

这个网站有API吗?

否则,你将不得不进行网络请求,以他们要求的格式提交所有详细信息,然后阅读响应,然后自动填写第二张表格"勾选一些组合框",最后阅读包含文件的响应。

或者,还有浏览器模拟软件,比如用于网站测试的selenium。你可以在上面设置一个测试/脚本,它可以为你完成以上所有操作。不过,我不确定它是如何处理下载的文件的。

如果你想做路线1,请准备好每次其他网站更改时更改你的程序。如果他们加了一个captcha,那么你就完蛋了。

为了方便起见,在网络浏览器中存储密码不会为您省去大部分麻烦吗??

您可以这样做:

HttpWebRequest request = WebRequest.Create(@"http://stackoverflow.com") as HttpWebRequest;
request.Credentials = NetworkCredentials(@"username", @"password");
request.Timeout = 300;
if(string.IsNullOrEmpty(request))
     throw new Exception("Error in Request");
using(var stream = request.GetResponse().GetResponseStream())
     using(var writer = File.Create(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
          stream.CopyTo(writer);

您可以使用NetworkCredentials将这些传递到站点。创建HttpWebRequest后,您将能够访问许多功能。