类似于可以从http://download.finance.yahoo.com/d/quotes.csv?s=RHT
下载的CSV文件。如何下载需要身份验证的文件?
我可以简单地使用
My.Computer.Network.DownloadFile("http://download.finance.yahoo.com/d/quotes.csv?s=RHT,MSFT,NOVL&f=sl1c1d1&e=.csv", "h:\s.csv")
下载公开发布的文件。我尝试按照MSDN documentation设置用户名和密码,但我得到的只是登录页面的HTML内容。
答案 0 :(得分:2)
如果网站使用基于Cookie的身份验证,您需要将登录详细信息发布到服务器,收集Cookie,然后根据文件请求传递它们。
这并不像听起来那么容易......
这里有一个例子
菲尔答案 1 :(得分:2)
这完全取决于您在HTTP请求中提供用户名/密码时网站是否会解释您的用户名/密码。有些网站/协议会,有些则不会。
这是一篇文章,展示了如何使用WebRequest类下载。
Downloading Files with the WebRequest and WebResponse Classes
除了本文之外,您还需要将您的用户名/密码添加到WebRequest。你可以这样做:
// Create a request for the specified remote file name
WebRequest request = WebRequest.Create(remoteFilename);
if (request != null)
{
string username = "your username";
string password = "your password";
request.Credentials = new System.Net.NetworkCredential(username, password);
...
}
不幸的是,如果使用此方法不起作用,那么雅虎的财务页面不允许自动提供用户名/密码,并且您必须以“老式方式”登录才能下载您的文件。
答案 2 :(得分:1)
听起来您使用的网站正在使用表单身份验证。除非您有权访问使用域认证的版本,否则您可能需要在拥有CookieContainer时使用HttpWebRequest和假的POST请求,以便您可以保留令牌。然后,您就可以在get请求中包含该令牌以下载CSV文件。