VB.NET 控制台应用程序 - 登录网站并下载文件

时间:2021-01-14 11:25:54

标签: vb.net cookies download console webclient

我正在开发一个 VB.NET 控制台应用程序,它会自动从不同的网站下载文本文件。到目前为止我一直在使用

My.Computer.Network.DownloadFile(url, local_path, username, password)

它运行良好 - 但有一个网站使用 cookie。在正常情况下,我必须在浏览器中手动访问该网站,通过在登录表单中输入我的凭据登录,按“登录”按钮,然后有一个链接可以让我下载文件。 如果我在正常下载功能中使用此链接,我总是收到一条消息“未登录”。所以这基本上是我的问题: 在我告诉它下载文件之前,我需要使用 WebClient 或 HttpWebRequest 调用此 URL 并使用我的凭据登录。

但是,我在任何地方都找不到解决此问题的好示例或指南。 到目前为止,我已经尝试了以下方法:

Dim client As New WebClient
Dim values As New NameValueCollection()
values.Add("login[username]", "<my_login>")
values.Add("login[password]", "<my_password>")
client.UploadValues("https://www.website.com/customer/account/login/", values)
Dim strDL As String = client.DownloadString("https://www.website.com/downloadFile.php/")
Console.WriteLine(strDL)

这不起作用,我的控制台只是显示“未登录”。

我知道您也可以使用 CookieContainer,但不能使用 WebClient,只能使用 HttpWebRequest。我想我还没有掌握那个概念。在我的情况下,网站的 cookie 会在 1 小时后过期,所以我认为我使用 NameValueCollection 的方法也不起作用(或者它可能会但只有在 cookie 有效的情况下)所以我的猜测是我必须以某种方式登录网站,获取 cookie 名称和值,然后使用这些信息下载文件。但是,正如我所说,我在任何地方都找不到一个很好的例子来说明如何做到这一点。

0 个答案:

没有答案
相关问题