Как программно загрузить данные GitHub, используя C# - PullRequest
1 голос
/ 05 апреля 2020

NY Times поддерживает хранилище GitHub на https://github.com/nytimes/covid-19-data. Этот репозиторий содержит License, ReadMe и два файла данных. Файлы данных - это us-states.csv и us-counties.csv. Оба содержат набор временных рядов ежедневного числа случаев и смертей COVID-19 по штатам или округам.

Я пытаюсь загрузить файл us-states.csv. Программа, которую я разработал:

using System;
using System.Net;

namespace NYTimes_Console
    {

    // ************************************************* class Program

    class Program
        {

        // ****************************************************** Main

        static void Main ( string [ ] args )
            {
            byte [ ] bytes; 
            string   url = 
                        "https://raw.githubusercontent.com/nytimes/" + 
                        "covid-19-data/blob/master/us-states.csv";
            //string   url = 
            //            "https://github.com/nytimes/" + 
            //            "covid-19-data/blob/master/us-states.csv";


            try
                {
                using ( WebClient client = new WebClient ( ) )
                    {
                    client.Headers.Add("user-agent", "Anything");
                    bytes = client.DownloadData ( url );
                    }
                Console.WriteLine ( "Download Successful" );
                }
            catch ( Exception ex )
                {
                Console.WriteLine ( "Download Failed\n{0}",
                                    ex.Message.ToString ( ) );
                }
            Console.Write ( "Enter to exit");
            Console.ReadLine ( );
            }

        } // class Program

    } // namespace NYTimes_Console

Когда URL-адрес "https://github.com/nytimes/covid-19-data/blob/master/us-states.csv", я получаю следующее:

Download Failed
The underlying connection was closed: An unexpected error occurred on a send.

Когда я смотрю в я нахожу исключение:

InnerException = {"Received an unexpected EOF or 0 bytes from the transport stream."}

Когда URL-адрес "https://raw.githubusercontent.com/nytimes/covid-19-data/blob/master/us-states.csv", я получаю следующее:

Download Failed
The remote server returned an error: (404) Not Found.

и InnerException равно NULL .

Кажется, я неправильно понимаю репозитории GitHub и доступ к ним.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2020

Вы можете попытаться решить это так:

string url = "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv";
0 голосов
/ 05 апреля 2020

У меня есть предложение не использовать WebClient.

Мы не рекомендуем использовать класс WebClient для новых разработок. Вместо этого используйте System.Net.Http.HttpClient класс.

Используйте взамен HttpClient. И ссылка, предложенная @Augusto Cesar de Camar go в другом ответе здесь.

Полный код приложения

using System;
using System.Net.Http;

namespace ConsoleApp1
{
    class Program
    {
        // HttpClient is intended to be instantiated once and re-used throughout the life of an application.
        private static HttpClient client = new HttpClient();

        static void Main(string[] args)
        {
            string url = "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv";
            try
            {
                string result = client.GetStringAsync(url).GetAwaiter().GetResult();
                Console.WriteLine(result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...