C # URL에서 csv 파일을 다운로드하는 방법 [중복]

Nov 15 2020

나는 그것이 어리석은 질문이라는 것을 알고 있지만 많은 포럼을 읽었으며 아무것도 나를 위해 작동하지 않았습니다. ( "https://www.nasdaq.com/api/v1/historical/HPQ/stocks/2010-11-14/2020-11-14") csv 파일을 다운로드해야하는 URL이 있습니다. 이 URL을 브라우저에 붙여 넣으면 제대로 작동하지만 내 앱에 붙여 넣으면 전혀 작동하지 않습니다. 내 앱이 응답을 멈추고 빈 파일을 만듭니다.

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

답변

bre_dev Nov 15 2020 at 01:16

적절한 웹 요청을 보내야합니다. 이 코드를 시도하면 작동합니다.

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);
    }
}

파일 스트림에는 파일이 포함됩니다.