【问题标题】:C# How to download csv file from url [duplicate]C#如何从url下载csv文件[重复]
【发布时间】:2020-11-14 17:57:42
【问题描述】:

我知道这是一个愚蠢的问题,但我已经阅读了很多论坛,但没有什么对我不起作用。 (“https://www.nasdaq.com/api/v1/historical/HPQ/stocks/2010-11-14/2020-11-14”) 我得到了需要下载 csv 文件的网址。当我将此网址粘贴到浏览器中时,它可以正常工作,但是 当我将它粘贴到我的应用程序中时,它根本不起作用。我的应用程序只是停止响应并创建空文件。

WebClient webClient = new WebClient();
webClient.DownloadFile(
    "https://www.nasdaq.com/api/v1/historical/HPQ/stocks/2010-11-14/2020-11-14",
    @"HistoryDataStocks.csv");   

【问题讨论】:

  • 您可以尝试使用HttpClient,否则请查看此类似问题以获取一些提示。 stackoverflow.com/questions/307688/…
  • 设置请求标头,如重复问题的答案所示。并考虑迁移到 HttpClient。 Microsoft 不鼓励使用 WebClient。

标签: c# csv network.framework


【解决方案1】:

您需要发送正确的网络请求。试试这个代码,它会工作:

var request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 30000;
request.AllowWriteStreamBuffering = false;

using (var response = (HttpWebResponse)request.GetResponse())
using (var s = response.GetResponseStream())
using (var fs = new FileStream("test.csv", FileMode.Create))
{
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = s.Read(buffer, 0, buffer.Length)) > 0)
    {
        fs.Write(buffer, 0, bytesRead);
        bytesRead = s.Read(buffer, 0, buffer.Length);
    }
}

文件流将包含您的文件。

【讨论】:

  • 这并不比问题中更简单的代码更好。您没有尝试过问题中的 URL 吗?
  • 这是另一种可行的方法。
  • 用问题中的 URL 试试看,它不起作用。而且它不仅不同,而且没有理由地更加复杂。这样做是没有意义的。这是我们在拥有 WebClient 和 HttpClient 之前所做的。今天它或多或少已经过时了。
  • 非常感谢您的回答)但不幸的是它对我不起作用我得到了异常(:System.Net.WebException:“操作超时过期”
猜你喜欢
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 2017-04-05
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多