Передача данных в application / x-www-form-urlencoded в HttpClient
- Передача данных из POSTMAN как x-www-form-urlencoded
- Ключевые и ценности следующие:
данные: P1;P2 формат: json
Соответствующий скручиваемый код от POSTMAN
curl --location --request POST 'https: // ap-url / id /' \ --header 'тип-содержимого: приложение / x-www-form-urlencoded' \ --data-urlencode 'данные =P1;P2' \
Как отправить данные как x-www-form-urlencoded на HttpClient?
2 ответа
Решение
- Используйте https://curl.olsh.me/ для команд curl в код C#
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://api-url/id"))
{
var contentList = new List<string>();
contentList.Add($"data={Uri.EscapeDataString("P1;P2")}");
contentList.Add($"format={Uri.EscapeDataString("json")}");
request.Content = new StringContent(string.Join("&", contentList));
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
var response = await httpClient.SendAsync(request);
}
}
Лучший шаблон - установить словарь и отправить данные этого словаря в методе post.
var client = _clientFactory.CreateClient("mobile-server");
var data = new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials"),
new KeyValuePair<string, string>("client_id",
_configuration.GetValue<string>("MobileTop:ClientId")),
new KeyValuePair<string, string>("client_secret",
_configuration.GetValue<string>("MobileTop:ClientSecret")),
};
var response =
await client.PostAsync("api/v2/connect/token", new FormUrlEncodedContent(data));