Не получается выполнить запрос на c# как в postman

С помощью Postman я делаю POST запрос на страницу naurok.com.ua/test/join. Этот запрос должен вернуть мне html страницу с тестами, точнее html, заготовленный под них. Всё прекрасно работает:

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

Content-Type: application/x-www-form-urlencoded

Имя можно любое.

Код: 775305.

_csrf можно найти в head-е страницы naurok.com.ua/test/join (он каждый раз генерируется новый и действителен на протяжении пары часов)

Я пробовал сделать запрос с такими же хедерами и данными, однако в ответ сайт мне кидает ошибку 400. После этого я решил скопировать код, сгенерированный Postman-ом для c#. Однако и он не работает корректно:

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

Код из картинки:

var client = new RestClient("https://naurok.com.ua/test/join");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
// хедер постмэна я убрал, однако и с ним ничего не работает
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "_csrf=W9IiWC1pzG9kRnVcKhGyQCy77hlIZjgOtnRLRUcmJpQVh2khQBG6GCIAEDBdJ58ES83WeDwBe16BLj4ycm9KzA%3D%3D%3D%3D&JoinForm%5Bname%5D=test546&JoinForm%5Bgamecode%5D=775305", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
File.WriteAllText("./response.html", response.Content); // сохранения html ответа в файл

Прошу помочь разобраться, почему мой запрос на c# и в postman работают по-разному, и как исправить. Благодарю.


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

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

Можно поробовать кинуть реквест через другого клиента

using (var client = new HttpClient())
{
    var request = new HttpRequestMessage(HttpMethod.Post,"https://naurok.com.ua/test/join");

    request.Headers.Clear();
    request.Headers.Add();
    // добавляешь хедеры в формате "<key>","<value>"
    ...

    var response = await client.SendAsync(request);
    response.Content // используешь контент ответа
}
→ Ссылка