CURL запрос в C#
Не могу сделать запрос вот такого вида: curl -u {client_id}:{client_secret} -d grant_type=client_credentials https://us.battle.net/oauth/token
Подскажите пожалуйста, как сделать данный запрос на C#? Заранее спасибо!
Ответы (1 шт):
Эх, попросил ведь я вас написать то, что у вас в итоге получилось. Ну ок, делаю я.
Код будет примерно следующим:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{client_id}:{client_secret}")));
var data = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials")
});
var resp = await client.PostAsync("https://us.battle.net/oauth/token", data);
resp.EnsureSuccessStatusCode();
var result = await resp.Content.ReadAsStringAsync();
}
Где:
client.DefaultRequestHeaders.Authorization- авторизация, в CURL это-u. Тут на сколько я понял должна отправляться строка в кодировке ASCII, которая закодирована в Base64. Не проверял, поиграйтесь с ней и найдите то, что вам надо.data = new FormUrlEncodedContent(new[]- это аналог-d, который должен составитьapplication/x-www-form-urlencodedконтент для отправки.await client.PostAsync("https://us.battle.net/oauth/token", data);- отправляем данные POST запросом на указанный адрес.resp.EnsureSuccessStatusCode();- выводим Exception, если сервер дал нам что либо, кроме успешного заголовка.await resp.Content.ReadAsStringAsync();- берем из ответа данные в виде текста.
Повторюсь, я не проверял данный код. Если будут проблемы, то стоит поиграться с заголовком авторизации, остальное должно подходить под CURL.