使用C#从网站下载文件

RAH*_*HUL 7 .net c#

我想使用以下代码从网站下载文件:

WebClient webClient = new WebClient();
webClient.DownloadFile("http://www.nseindia.com/content/historical/EQUITIES/2011/MAR/cm07MAR2011bhav.csv.zip", @"c:\myfile.txt");
Run Code Online (Sandbox Code Playgroud)

显示的例外是"禁止错误403"

这意味着找不到页面,但我可以使用java代码下载该文件,也可以直接从该网站下载.

如何使用C#代码下载?

Rit*_*ton 6

首先要注意的是,如果您在浏览器中尝试URL,则文件会下载.这告诉你的是,你需要配置WebClient来发送模仿网站期望浏览器做什么的标题.这对我有用:

        var wc = new WebClient();
        var ua = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
        wc.Headers.Add(HttpRequestHeader.UserAgent, ua);
        wc.Headers["Accept"] = "/";
        wc.DownloadFile("http://www.nseindia.com/content/historical/EQUITIES/2011/MAR/cm07MAR2011bhav.csv.zip", @"d:\myfile.txt");
Run Code Online (Sandbox Code Playgroud)

另外,保存到C:root是有问题的.保存在其他地方.


Ber*_*Sed 3

我使用 wget 测试了该 URL,并收到 403 错误。我能够通过向标头添加用户代理字符串来解决该问题

尝试将用户代理字符串添加到标头,使用webClient.Headers.Add(HttpRequestHeader.UserAgent, "blah")