1 回答
TA贡献1785条经验 获得超8个赞
这是由错误的服务器实现引起的。如果您使用 Fiddler,您将看到服务器将 HTTPS 和 HTTP 连接重定向到同一个HTTP url,并添加了一个security=true
cookie。
通过 HTTP 调用特别有趣:
第一个 HTTP 重定向到 HTTPS URL
HTTPS 使用
security=true
cookie重定向回原始 HTTP如果 cookie 不存在,则循环再次开始
这意味着 :
没有安全感。任何东西都可以拦截该调用并更改或替换文件的内容。希望您不要尝试通过 WiFi 下载此文件!
除非您存储 cookie 或自行添加,否则服务器将导致无限重定向循环。
WebClient
无法存储 cookie。这是在下载页面和文件时创建的一个过时的类。它的所有功能以及更多功能都由 HttpClient 类提供。
不过,在这种情况下,您可以自己将 cookie 添加为标头并避免重定向,并且仍然通过 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 下载文件
- 1 回答
- 0 关注
- 390 浏览
添加回答
举报