【发布时间】:2019-01-24 03:57:00
【问题描述】:
我对代码很满意,它适用于我的其他解决方案。我有一个知识空白,因为我不明白什么是 URI。这应该有效,但无效:
https://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download
现在我在想这不是一个文件,对吧?将上述内容扔向浏览器会提供一个文件。异常消息是“底层连接已关闭:接收时发生意外错误。”
String address = "https://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download";
.....
using (WebClient Client = new WebClient())
{
try
{
Client.DownloadFile(address, destPath + filename);
}
catch (Exception ex)
{
Log.Line("Error: " + ex.Message);
return 1;
}
}
URI: this link
【问题讨论】:
-
你的代码是什么?
WebClient.DownloadFile(...,在问题中提供。 -
我无法访问您的链接,但是是的,这是一个 URL,可以很好地传递给
DownloadFile。 如何服务器响应可能涉及大量因素,这意味着在某些情况下(通过浏览器,如果您已经在该站点上建立了会话,例如)它会给您一个文件在其他情况下,您会收到错误消息。这就是网络的本质。现在,可能是那个 URL 做了奇怪的重定向,浏览器会处理而DownloadFile不会。同样,我无法访问它来评估它。 -
嗯,点击上面我自己的链接不起作用。如果我复制到记事本并粘贴到浏览器中,她就可以工作。试试看。我已经编辑在问题中还包含一个 HTML 链接。
-
WebClient 需要:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;和一个不支持最近安全升级的用户代理。使用 Internet Explorer/Edge 标头:Mozilla/5.0 (Windows NT 10; WOW64; Trident / 7.0; rv: 11.0) like Gecko。然后下载完成。 -
安全协议是
HSTS:HTTP Strict Transport Security。 WebRequest/WebResponse 不支持此功能,因此当服务器认为它可以使用它时,连接会 AWOL。
标签: c# webclient-download