C#如何从url下载csv文件[重复]

Posted

技术标签:

【中文标题】C#如何从url下载csv文件[重复]【英文标题】:C# How to download csv file from url [duplicate] 【发布时间】: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,否则请查看此类似问题以获取一些提示。 ***.com/questions/307688/… 设置请求标头,如重复问题的答案所示。并考虑迁移到 HttpClient。 Microsoft 不鼓励使用 WebClient。 【参考方案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:“操作超时过期”

以上是关于C#如何从url下载csv文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 CSV 生成 Excel 电子表格(ASP.NET C#)[重复]

Flask:单击按钮下载csv文件[重复]

从url下载图像并从csv文件中为其指定id

使用 SSIS 从网站 (URL) 读取多个 CSV 文件?

从带有 URL 的 .CSV 文件下载图像时出现 HTTP 403 我该怎么办?

在 C# 中上传 CSV 文件 [重复]