C# webClient.DownloadFile()返回404
使用此url的浏览器下载文件正常,但webClient返回404C# webClient.DownloadFile()返回404,c#,asp.net,http-status-code-404,webclient,C#,Asp.net,Http Status Code 404,Webclient,使用此url的浏览器下载文件正常,但webClient返回404 string url = "http://zakupki.gov.ru/44fz/filestore/public/1.0/download/priz/file.html?uid=19CC93BEA67C4650B51D69CAA28CB27D"; using (var webClient = new WebClient()) {
string url = "http://zakupki.gov.ru/44fz/filestore/public/1.0/download/priz/file.html?uid=19CC93BEA67C4650B51D69CAA28CB27D";
using (var webClient = new WebClient())
{
webClient.DownloadFile(url , "name");
}
Web浏览器执行的请求与来自WebClient的请求之间存在差异 您需要将以下内容添加到代码中:
webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
因此,您的代码将更改为:
string url = "http://zakupki.gov.ru/44fz/filestore/public/1.0/download/priz/file.html?uid=19CC93BEA67C4650B51D69CAA28CB27D";
using (var webClient = new WebClient())
{
webClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
webClient.DownloadFile(url, "name.docx");
}
我希望它能帮助您也许您需要设置UserAgent。可能会帮助你。如果可以,请查看响应。它是用俄语编写的Word文档(.docx)。这和你有关吗?因为现在已经公开了。用户代理头的建议是正确的。一个次要的建议是:使用实际值,即
$”Mozilla/4.0(兼容;MSIE 6.0;{Environment.OSVersion.VersionString};.NET CLR{Environment.Version};)“
,而不是对字符串进行硬编码,在语义上更正确(尽管最终这并不重要)。