我想使用webclient下载68kb的zip文件,但出现错误: C#System.Net.WebException:“尝试进行过多的自动重定向。”
关于此帖子的重复帖子: 该解决方案的解释如下:Why i'm getting exception: Too many automatic redirections were attempted on webclient? 请勿使我的下面的代码正常工作并下载zip文件。 我该如何编辑以更好地解释?
我的代码:
var url_from = "http://www1.caixa.gov.br/listaweb/Lista_imoveis_RJ.zip";
var _to = @"F:\folder\file.zip";
using (var client = new WebClient())
{
client.DownloadFile(url_from, _to);
}
我也尝试了异步方式,但是它生成了空的zip文件。 像这样:How do I download zip file in C#? 这是How can I download a ZIP file from a URL using C#?
答案 0 :(得分:1)
这是由错误的服务器实现引起的。如果您使用Fiddler,则会看到服务器将HTTPS和HTTP连接都重定向到相同 HTTP URL,并添加了security=true
cookie。
通过HTTP调用特别有趣:
security=true
cookie重定向回原始HTTP 这意味着:
WebClient
无法存储Cookie。当需要下载页面和文件时,这是一个过时的类。 HttpClient类提供了其所有功能以及更多功能。
在这种情况下,您可以自己添加cookie作为标头,并避免重定向,然后 still 通过HTTPS下载文件
WebClient
是一个过时的类。它是为简单的文件和页面请求而创建的,
var url_from = "https://www1.caixa.gov.br/listaweb/Lista_imoveis_RJ.zip";
using (var client = new System.Net.WebClient())
{
client.Headers.Add(System.Net.HttpRequestHeader.Cookie, "security=true");
client.DownloadFile(url_from, _to);
}
这将导致一个呼叫并通过HTTP下载文件