C# HttpClient возвращает пустую строку при POST запросе

Имеется метод для получения данных от API с помощью HttpClient. Вроде все просто, но в результате выполнения Content пустой. Статус ответа при этом 200. При выполнении этого же запроса через сервис проверки API все прекрасно работает - т.е. API работает. Авторизации API не требует. RequestContent представляет собой объект содержащий данные запроса, сериализуется в "{"action":"get","items":{"href":"/windows/releases/","what":1}}".

Код метода:

private static async Task<string> GetReleasesList(CancellationToken cancellationToken = default)
{
    var handler = new HttpClientHandler
    {
        UseDefaultCredentials = true,
        AllowAutoRedirect = false,
        UseCookies = true
    };

    var client = new HttpClient(handler);
    client.DefaultRequestHeaders.Add("Accept", "application/json");
            
    var requestContent = new RequestContent("get", "/windows/releases/", 1);
            
    var response = await client.PostAsJsonAsync("https://mkvtoolnix.download/windows/releases/", requestContent, cancellationToken);

    response.EnsureSuccessStatusCode();
    var text = await response.Content.ReadAsStringAsync(cancellationToken);
    return text;
}

Класс RequestContent

public class RequestContent
        {
            [JsonPropertyName("action")]
            public string Action { get; set; }

            [JsonPropertyName("items")]
            public Item Items { get; set; }

            public RequestContent(string action, string href, int what)
            {
                Items = new Item(href, what);
                Action = action;
                
            }

            public class Item
            {
                [JsonPropertyName("href")]
                public string Href { get; set; }

                [JsonPropertyName("what")]
                public int What { get; set; }

                public Item(string href, int what)
                {
                    Href = href;
                    What = what;
                }
            }
        }```

Ответы (1 шт):

Автор решения: aepot

Видимо это просто примитивная защита от ботов или баг сервера. Достаточно добавить User-Agent.

private static readonly HttpClient client = new() { DefaultRequestVersion = HttpVersion.Version20 };

static async Task Main(string[] args)
{
    client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0");
    var obj = new { action = "get", items = new { href = "/windows/releases/", what = 1 } };
    using var response = await client.PostAsJsonAsync("https://mkvtoolnix.download/windows/releases/", obj);
    string text = await response.Content.ReadAsStringAsync();
    Console.WriteLine(Regex.Unescape(text));
}

Вывод в консоль

{"items":[{"href":"/","time":1639909711000,"size":null,"managed":true,"fetched":true},{"href":"/almalinux/","time":1622654036000,"size":null,"managed":true,"fetched":false},{"href":"/appimage/","time":1636884099000,"size":null,"managed":true,"fetched":false},{"href":"/centos/","time":1622653796000,"size":null,"managed":true,"fetched":false},{"href":"/centosstream/","time":1622890796000,"size":null,"managed":true,"fetched":false},...

HttpVersion.Version20 здесь роли не играет, я просто пока отлаживал, видел что сервер поддерживает, и просто добавил в код.

→ Ссылка