Передача данных в 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 ответа

Решение
  1. Используйте 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));    
Другие вопросы по тегам