Как составить POST запрос на C#?

В Постмане составил такой запрос. Возвращает то, что нужно. Как теперь воспроизвести это на c#? Нигде не нашел чтобы в POST запросе передавались сразу и тело и заголовки и параметры. Как правильно сделать? введите сюда описание изображения

введите сюда описание изображения введите сюда описание изображения


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

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

Можете использовать RestSharp

using RestSharp; 
   
var client = new RestClient("https://wsdemo......");
var request = new RestRequest("?task=login&view=login");  // Параметры
request.Method = Method.POST;
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddHeader("Cookie", "PHPSESSID=09812");
//  request.AddCookie("Cookie","PHPSESSID=09812");  // Или использовать метод AddCookie
request.AddParameter("application/x-www-form-urlencoded",
    $"user[login]={login}&user[password]={password}",  // Передать логин и пароль
    ParameterType.RequestBody);
var response = client.Execute(request);

UPD

Передача логина и пароля в кодировке:

var client = new RestClient("https://wsdemo......");
var request = new RestRequest("?task=login&view=login");  // Параметры
request.Method = Method.POST;
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("user[login]", login);
request.AddParameter("user[password]", password);
request.AddHeader("Cookie", "PHPSESSID=09812");
var response = client.Execute(request);
→ Ссылка
Автор решения: Support Fito

Использовать параметры в POST запросе не нужно и не правильно. Это не GET запрос.

using System.Collections.Generic;
using System.Net.Http;

namespace TestProject
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string url = "your url";
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("key", "value"),
                new KeyValuePair<string, string>("key2", "value2"),
            });

            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("header name", "header value");
                client.DefaultRequestHeaders.Add("header name2", "header value2");
                var response = await client.PostAsync(url, content);
                var result = await response.Content.ReadAsStringAsync();
            }
        }
    }
}
→ Ссылка