Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpHtStr 467 of 509 menu
◀ ▶

Потоковый ответ HTTP в C#

Тело можно читать порциями из потока. Его даёт вызов ReadAsStreamAsync - так удобно для большого файла, когда не нужна одна строка на весь ответ.

Прочитаем первые байты с example.com через ReadAsync в буфер. Число прочитанных байтов будет больше нуля:

using System.Net.Http; using HttpClient client = new(); using HttpResponseMessage response = await client.GetAsync("https://example.com/"); await using Stream stream = await response.Content.ReadAsStreamAsync(); byte[] buf = new byte[64]; int n = await stream.ReadAsync(buf); Console.WriteLine(n);

Поток закрывают через await using, иначе соединение может держаться дольше нужного. Вызов GetStringAsync проще для маленького текста, а поток удобнее для длинного ответа. Сразу после открытия поток доступен для чтения:

using System.Net.Http; using HttpClient client = new(); using HttpResponseMessage response = await client.GetAsync("https://example.com/"); await using Stream stream = await response.Content.ReadAsStreamAsync(); Console.WriteLine(stream.CanRead);

Из ответа "https://httpbin.org/html" прочитайте через поток 100 байт и выведите, сколько байт получено.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить