.NET 中获取并使用流式响应

HTTP 流式响应是一种服务器分块传输技术,可以让客户端在收到第一块数据时就开始处理而不用等到数据全部传输完毕,常见于大模型会话请求中。

代码示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using var client = httpFactory.CreateClient();
client.DefaultRequestVersion = HttpVersion.Version20;
client.DefaultRequestHeaders.Authroization = new AuthenticationHeaderValue("Bearer", apiKey);

try
{
    using var request = new HttpRequestMessage(HttpMethod.Post, url)
    {
        Content = new StringContent(body, Encoding.UTF8, "application/json")
    };
    using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); // 等待到响应头返回
    using var stream = await response.Content.ReadAsStreamAsync();
    using var reader = new StreamReader(stream);

    while (!reader.EndOfStream)
    {
        var content = await reader.ReadLineAsync();
        if (!string.IsNullOrEmpty(content))
        {
            // data: {...}
            // 处理数据
        }
    }
}
catch (Exception ex)
{
    // ...
}
使用 Hugo 构建
主题 StackJimmy 设计