WebClient类的下载文件发生异常

时间:2019-11-02 19:33:48

标签: c# maven webclient

由于我是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 :(得分:0)

您的

中的第二个参数似乎有问题

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;

答案 1 :(得分:0)

好,我找到了解决方法。

似乎已不推荐使用WebClient。在.net doc中: https://docs.microsoft.com/fr-fr/dotnet/api/system.net.webclient?view=netframework-4.8

我们可以阅读:

  

重要

     

Nous vousdéconseillonsd'utiliser la classe WebClient新手   开发。奥利乌·德·塞拉   System.Net.Http.HttpClient。

所以我将代码更改为使用HttpClient类。