WebClient.DownloadFile要求的URI到底是什么?

时间:2018-08-17 06:44:34

标签: c# webclient-download

我对代码很满意,它对我的​​其他解决方案非常有用。我有一个知识鸿沟,因为我不了解什么是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

1 个答案:

答案 0 :(得分:1)

您有一个完全有效的URI。目标服务器可能以与您期望的方式不同的方式响应请求。例如,取决于您的Web客户端。要调试此类问题,请使用curl

curl -v https://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download

以上命令显示服务器未使用预期的csv文件进行答复。这不是您的代码中的问题。您可以尝试使用curl -H标志假装其他用户代理,或者设置一些重定向选项,直到到达为止。

在您的特定情况下,标题Accept-Encoding: gzip似乎可以解决问题。