如何从 URL 获取文件?

问题描述 投票:0回答:1

我的网络服务器中有一个 csv 文件。文件地址为 http://192.168.1.2/Folder/File.csv.

要访问该文件,我需要使用用户名和密码。

我希望可以将此文件复制到本地文件夹中。

我尝试使用此代码:

internal static async void GetFile()
{
    try
    {
        HttpClientHandler handler = new HttpClientHandler();
        handler.Credentials = new NetworkCredential("User", "123456");

        HttpClient client = new HttpClient(handler);
        var response = await client.GetAsync("http://192.168.1.2/Folder/File.csv");
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.Message);
        Console.ReadKey();
    }
}

但在控制台中我收到错误:“MyApplication.exe(进程 12345)退出,代码为 0”。

如果我在 catch 的第一行设置断点,代码不会获取该行,因此不会捕获异常。当我运行最后一行并调用 GetASync() 方法时,会发生错误。

如何访问 csv 文件?

谢谢。

c# http
1个回答
0
投票

您的代码没有遇到任何错误。正如帕纳吉奥蒂斯所说,你对响应没有做任何事情。

响应变量的类型是HttpResponseMessage。您可以通过访问 StatusCode 属性来检查状态。

var response = await client.GetAsync("http://192.168.1.2/Folder/File.csv");
System.Net.HttpStatusCode statusCode = response.StatusCode;
response.EnsureSuccessStatusCode(); // throws error if call was not successful

您可以通过将内容读取为字节数组来读取响应的内容(在本例中是一个文件)。

byte[] httpResponseMessageContent = await httpResponseMessage.Content.ReadAsByteArrayAsync();

使用此字节数组,您可以将其保存为本地文件或将其转换为base64以进行其他操作。

© www.soinside.com 2019 - 2024. All rights reserved.