Преобразование кода из RestSharp в HttpClient

Может ли кто-нибудь помочь мне преобразовать этот пример ASP .Net Core (для использования в моем веб-API для использования API управления из Auth0), который использует RestSharp, в пример с использованием HttpClient?

var client = new RestClient("https://YOUR_AUTH0_DOMAIN/oauth/token");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"grant_type\":\"client_credentials\",\"client_id\": \"YOUR_CLIENT_ID\",\"client_secret\": \"YOUR_CLIENT_SECRET\",\"audience\": \"https://YOUR_AUTH0_DOMAIN/api/v2/\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Я боролся ... У меня есть это:

var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri("https://YOUR_AUTH0_DOMAIN/oauth/token");

но я не уверен насчет остального... спасибо


person Fabricio Rodriguez    schedule 20.06.2017    source источник


Ответы (1)


Вам нужно взять тело запроса и создать контент для публикации

var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri("https://YOUR_AUTH0_DOMAIN/oauth/token");

var json = "{\"grant_type\":\"client_credentials\",\"client_id\": \"YOUR_CLIENT_ID\",\"client_secret\": \"YOUR_CLIENT_SECRET\",\"audience\": \"https://YOUR_AUTH0_DOMAIN/api/v2/\"}"
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync("", content);
person Nkosi    schedule 20.06.2017
comment
Я уверен, что вы знаете, но, возможно, стоит упомянуть ОП (поскольку в посте нет структуры, ее трудно проиллюстрировать). Создание нового экземпляра HttpClient для каждого запроса — плохая идея, предпочтительнее использовать общий объект HttpClient в классе. - person maccettura; 20.06.2017
comment
@maccettura да. Я знаю, и это стоит упомянуть. - person Nkosi; 20.06.2017