我正在尝试从纳斯达克下载CSV的历史数据。当我在请求上调用GetResponse方法时,代码不起作用。这是无效的代码:
string url = "https://www.nasdaq.com/api/v1/historical/A/stocks/2019-07-19/2020-07-19";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
响应永远不会回来,只是超时。有时它给我一个404错误。如果我将URL粘贴到浏览器中,则可以正常下载。任何帮助,将不胜感激。预先感谢。
答案 0 :(得分:0)
根据HttpWebRequest
文档:
我们不建议您将
HttpWebRequest
用于新开发。而是使用System.Net.Http.HttpClient
类。
由于@mjwills绝对正确地保留在注释中,因此该服务器需要Accept-Encoding
和Connection
标头。
简短控制台示例
public class Program
{
private static readonly HttpClient httpClient = new HttpClient();
static async Task Main(string[] args)
{
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");
httpClient.DefaultRequestHeaders.Connection.ParseAdd("keep-alive");
string url = "https://www.nasdaq.com/api/v1/historical/A/stocks/2019-07-19/2020-07-19";
string text = await httpClient.GetStringAsync(url);
Console.WriteLine(text);
Console.ReadKey();
}
}
输出
Date, Close/Last, Volume, Open, High, Low
07/17/2020, $94.37, 3463585, $93.41, $94.51, $92.69
07/16/2020, $92.86, 1226388, $92.98, $93.21, $92.06
07/15/2020, $92.88, 1897108, $91.74, $93.06, $91.08
07/14/2020, $90.69, 1361240, $88.83, $90.79, $88.07
. . .
. . .