C#http返回的文件流怎么读取
时间: 2024-12-24 15:17:14 浏览: 30
在C#中,如果你想从HTTP响应中读取文件流并保存到本地或者逐行处理数据,你可以使用`System.Net.Http`库提供的`HttpClient`类。这里是一个基本的例子,展示了如何发送GET请求并获取文件内容:
```csharp
using System;
using System.IO;
using System.Net.Http;
public async Task<string> DownloadFileStreamAsync(string url)
{
using (var httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(url);
// 检查请求是否成功
if (!response.IsSuccessStatusCode)
return $"请求失败,状态码:{response.StatusCode}";
// 获取二进制响应内容
var content = await response.Content.ReadAsByteArrayAsync();
// 如果你想将文件保存到磁盘,可以这样做
// string filePath = "path_to_save_file";
// File.WriteAllBytes(filePath, content);
// 如果你需要逐行读取,例如作为文本流
var memoryStream = new MemoryStream(content);
using (var streamReader = new StreamReader(memoryStream))
{
string line;
while ((line = streamReader.ReadLine()) != null)
Console.WriteLine(line);
}
return "文件流已读取完毕";
}
}
// 调用函数
string result = await DownloadFileStreamAsync("http://example.com/file.txt");
```
在这个例子中,我们首先创建了一个`HttpClient`实例,然后通过`GetAsync`方法异步下载文件。如果HTTP响应状态不是200 OK,我们会返回错误信息。然后我们读取响应的内容为字节数组,并根据需要转换为`MemoryStream`来逐行读取。
阅读全文