Как передать данные для авторизации и тело в Post запросе на C#
Всем привет. У меня есть код на Python, который отправляет Post запрос с телом и данными для авторизации на сайт, получает ответ и выводит его на консоль. Он работает, но я хочу разобраться как сделать тоже самое на C#. Просто отправить Post запрос с телом получилось, а вот как в него добавить учетные данные для входа не могу понять.
Код на Python, который работает:
import requests
authorization_data = {"Username": "User123", "Password": "qwerty123456"}
json_data = {"aggs": {"classAggregation": {"terms": {"field": "_type","size": 100}}},"query": {"match_all": {}},"size": 0}
url_address = "http://*************/****/******"
result = requests.post(url_address, json=json_data, auth=(authorization_data["Username"],authorization_data["Password"]))
print(result.text)
Код на C#, который не могу проверить, потому что не знаю как добавить авторизацию
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
namespace MetaSearch
{
public class Program
{
public static void Main(string[] args)
{
WebRequest request = WebRequest.Create("http://*********/***/*******");
request.Method = "POST";
string postData = "{\"query\":{\"bool\":{\"must\":[{\"range\":{\"Id\":{\"gte\":111,\"lte\":111}}}],\"must_not\":[],\"should\":[]}},\"from\":0,\"size\":50,\"sort\":[],\"aggs\":{},\"version\":true}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
using (dataStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
}
response.Close();
}
}
}
Заранее благодарю за помощь
Ответы (1 шт):
Автор решения: Vasilich
→ Ссылка
Получилось :) Добавил
var credentials = new NetworkCredential("username", "qwerty123456");
и
request.Credentials = credentials;
И все прошло успешно.