Загрузите файл CSV с помощью HttpClient и обработайте с помощью CsvHelper onfly - PullRequest
0 голосов
/ 05 августа 2020
• 1000 заранее спасибо

1 Ответ

0 голосов
/ 08 августа 2020

Итак, код, который вы опубликовали, немного отстает ... Мне не удалось его скомпилировать, поэтому я переписал его, чтобы следовать общему шаблону при использовании HttpClient:

var url = "https://www.nseindia.com/api/allIndices?csv=true";

using (var msg = new HttpRequestMessage(HttpMethod.Get, new Uri(url)))
{
    msg.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/csv"));
    using (var resp = await _client.SendAsync(msg))
    {
        resp.EnsureSuccessStatusCode();

        using (var s = await resp.Content.ReadAsStreamAsync())
        using (var sr = new StreamReader(s))
        using (var futureoptionsreader = new CsvReader(sr, CultureInfo.CurrentCulture))
        {
            futureoptionsreader.Configuration.RegisterClassMap<MappingNSEIndexes>();
            var list = futureoptionsreader.GetRecords<RawNSEIndexes>();
            var number = list.Count();
        }
    }
}

Имейте в виду, сервер не вернет никаких данных, если вы не добавите строку Headers.Accept.

Одна из основных проблем - это строка:

var response = sendtask.Result.EnsureSuccessStatusCode();
var httpStream = await response.Content.ReadAsStreamAsync();

Это даже не compile - EnsureSuccessStatusCode возвращает void. Итак, я предполагаю, что вы скопировали и вставили код после того, как изменили его, пытаясь устранить неполадки.

...