Как разобраться что чему присваивать?

Уже довольно давно, пользуюсь httpClient-ом как то так.

Просто где то взял ctrl+c / ctrl+v, или кто то подсказал, или на msdn. Работает, отлично!

А тут решил разобраться и немного переделать под свои задачи ().

И никак не могу понять, как вы понимаете, что тому же request.Content - надо / можно присвоить FormUrlEncodedContent ?

Я проваливался в классы c помощью F12 в HttpRequestMessage и в HttpContent, но что то никакой ниточки не нашёл(

        using HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://***.ru");

        request.Headers.Add("Origin", "https://***ru");
        request.Headers.Add("Referer", "https://***.ru");

        // Передаваемые данные c POST запросом
        request.Content = new FormUrlEncodedContent(new[]
        {
            new KeyValuePair<string, string>("key1", "value1"),
            new KeyValuePair<string, string>("key2", "value2"),
        });

UPD: Вопрос про - кому какой тип данных присвоить.

@A K - в первой части своего комментария правильно меня понял


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

Автор решения: Andrei Khotko

Свойство HttpRequestMessage.Content имеет тип System.Net.Http.HttpContent. HttpContent - это абстрактный класс. Значит, свойству Content может быть присвоен объект любого класса, который наследует абстрактный класс HttpContent.

Чтобы узнать, каких стандартных наследников предлагает .NET "из-под капота" достаточно зайти в документацию по свойству HttpRequestMessage.Content:

  • ByteArrayContent — Содержимое HTTP, основанное на массиве байтов.
  • FormUrlEncodedContent — Содержимое HTTP кортежей имен и значений, закодированных с помощью типа MIME application/x-www-Form-UrlEncoded.
  • MultipartContent — Содержимое HTTP, которое сериализуется с помощью спецификации multipart/* Content Type.
  • MultipartFormDataContent — Содержимое HTTP, закодированное с помощью типа MIME multipart/form-data.
  • StreamContent — Содержимое HTTP, основанное на потоке.
  • StringContent — Содержимое HTTP, основанное на строке.
→ Ссылка