我需要从网站下载文件(不是我写的)。 我有一个有效的用户名/密码来访问它,我可以手动完成。 但我想创建一个自动程序(在C#中)定期下载。
手动我必须登录,浏览到下载页面,选择一些组合框,然后单击“下载”。 此链接执行回发并返回所请求的文件。
我想我应该使用WebClient.DownloadFile,但我无法弄清楚如何传递所有必要的数据并以正确的方式请求回发。
答案 0 :(得分:3)
这个其他网站是否有API?
否则,你将不得不做一个网页请求,以他们需要的格式提交所有细节,然后阅读响应,然后自动填写第二个表格“检查一些组合框”,然后最后读取响应包含文件。
或者,还有浏览器仿真软件,例如selenium,用于网站测试。您可以在那里设置一个测试/脚本,它可以为您完成上述所有操作。我不知道如何处理下载的文件。
如果您想要执行路线1,请准备好在每次其他网站更改时更改您的计划。如果他们添加验证码,那么你几乎搞砸了。
为方便起见,在Web浏览器中存储的密码是否会为您节省大部分麻烦?
答案 1 :(得分:0)
你会做这样的事情:
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
后,您就可以访问很多功能。