-1

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

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

ebw1910
  • 175
  • 9
  • Старайтесь пользоваться поиском прежде чем задать вопрос. – aepot Jun 22 '21 at 09:55

2 Answers2

3

Можете использовать 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);
rahmanny
  • 141
  • Пароль как и логин в открытом виде может сломать запрос, его надо закодировать в %-кодировку. А вообще такие штуки все-таки лучше через HttpClient делать. Выглядеть будет еще проще. Еще не совсем понятно, зачем в двух местах application/x-www-form-urlencoded? Чтоб наверняка? Не хороший ответ. – aepot Jun 22 '21 at 10:42
  • Вы правы, нужно сделать: request.AddHeader("content-type", "application/x-www-form-urlencoded"); request.AddParameter("user[login]", login); request.AddParameter("user[password]", password); В этом случае логин и пароль передаются в кодированном виде – rahmanny Jun 22 '21 at 12:19
3

Использовать параметры в 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(&quot;header name&quot;, &quot;header value&quot;);
            client.DefaultRequestHeaders.Add(&quot;header name2&quot;, &quot;header value2&quot;);
            var response = await client.PostAsync(url, content);
            var result = await response.Content.ReadAsStringAsync();
        }
    }
}

}

aepot
  • 49,560