Тело HTTP-ответа в C#
Тело читают одним шагом: вызов GetStringAsync
сам выполняет GET и возвращает строку. Метод
ReadAsStringAsync на HttpContent удобен,
если HttpResponseMessage уже получен - любым
методом, не только GET.
Тело example.com начинается с "<!doctype"
(регистр может отличаться) - проверим подстроку:
using HttpClient client = new();
using HttpResponseMessage response = await client.GetAsync("https://example.com/");
string body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body.Contains("<!doctype html>", StringComparison.OrdinalIgnoreCase));
При 204 No Content строка часто пуста -
Length будет 0, это не ошибка
клиента:
using HttpClient client = new();
using HttpResponseMessage response = await client.GetAsync("https://httpbin.org/status/204");
string body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body.Length);
Сравните длину тела для "example.com" через
GetStringAsync и через
ReadAsStringAsync после GetAsync.