使用C#从网站下载文件
我想使用以下代码从网站下载文件:
WebClient webClient = new WebClient(); webClient.DownloadFile("https://www.nseindia.com/content/historical/EQUITIES/2011/MAR/cm07MAR2011bhav.csv.zip", @"c:myfile.txt");
显示的例外是“禁止错误403”
这意味着找不到页面,但我可以使用java代码下载该文件,也可以直接从该网站下载。
如何使用C#代码下载?
我用wget测试了这个URL,得到了403错误。 我能够通过向标头添加用户代理字符串来解决该问题
尝试使用webClient.Headers.Add(HttpRequestHeader.UserAgent, "blah")
向头部添加用户代理字符串
首先要注意的是,如果您在浏览器中尝试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("https://www.nseindia.com/content/historical/EQUITIES/2011/MAR/cm07MAR2011bhav.csv.zip", @"d:myfile.txt");
另外,保存到C:root是有问题的。 保存在其他地方。
您需要设置以下两个标头才能工作:
示例(已测试):
WebClient webClient = new WebClient(); webClient.Headers.Add("Accept", "application/zip"); webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); webClient.DownloadFile("https://www.nseindia.com/content/historical/EQUITIES/2011/MAR/cm07MAR2011bhav.csv.zip", @"D:testtest.zip");
using (WebClient wc = new WebClient()) { wc.Headers.Add("Referer:https://www.nseindia.com/products/content/equities/equities/archieve_eq.htm"); wc.Headers.Add("User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"); wc.DownloadFile(url, fileName); }
尝试类似的东西
上述就是C#学习教程:使用C#从网站下载文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
WebClient wc = new WebClient(); wc.Credentials = CredentialCache.DefaultCredentials;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/951839.html