Загрузка файла с классом WebClient происходит в исключение - PullRequest
0 голосов
/ 02 ноября 2019

Поскольку я новичок в c #, я не могу понять, почему это не работает.

Я пытаюсь загрузить файлы из репозитория Maven (https://repo1.maven.org/maven2/)

Вот мой код:

public static void Main(string[] args)
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
            try
            {
                var wcl = new WebClient();
                wcl.DownloadFile("https://repo1.maven.org/maven2/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar", "C:/minecraft_test/mcassets/libraries/test/test.file");
            }
            catch (Exception ex)
            {
                Console.WriteLine("error");
            }
        }

Я получил исключение: получил неожиданный EOF или 0 байтов из транспортного потока.

Я пытаюсь изменить / удалить строку:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

, ноУ меня все та же ошибка.

Я пытался с pwoershell:

$webclient = new-object System.Net.WebClient;
$webclient.DownloadFile("https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar", "C:/minecraft_test/mcassets/libraries/test/test.jar");

, и это работает ...

Что я могу сделать, чтобы это исправить?

С уважением, спасибо

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Хорошо, я нашел решение.

Кажется, что WebClient устарел. В .net doc: https://docs.microsoft.com/fr-fr/dotnet/api/system.net.webclient?view=netframework-4.8

Мы можем прочитать это:

Важно

Nous vous déconseillons d'utiliser la classe WebClient for le nouveau développement. Au lieu de cela, utilisz la classe System.Net.Http.HttpClient.

Поэтому я изменил свой код для использования класса HttpClient.

0 голосов
/ 02 ноября 2019

Похоже, проблема с вашим вторым параметром в

wcl.DownloadFile("https://repo1.maven.org/maven2/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar", "C:/minecraft_test/mcassets/libraries/test/test.file");.

Попробуйте удалить «.file» в пути, я уверен, что это решит проблему.

Также вам не нужно использовать следующий фрагмент кода:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
...