Как я могу разместить простой POCO с помощью HttpClient? - PullRequest
1 голос
/ 30 апреля 2019

У меня есть простой объект DTO, который выглядит следующим образом:

public class InstructionComponents
    {
        public int ApplicationNumber { get; set; }
        public string FurtherComments { get; set; }
    }

Я хочу иметь возможность отправить этот объект через запрос POST на конечную точку API, которая использует ASP.NET MVC. Однако я хочу убедиться, что данные отправляются с использованием тела запроса, а не просто добавляются к URL-адресу, как в GET.

Это достаточно просто с помощью запросов get и может быть достигнуто с помощью следующего кода.

            var url = //endpoint url   
            using(var httpClient = new HttpClient())
            {
                var response = httpClient.GetStringAsync(url).Result;
                return result;
            }

Я знаю, что могу сериализовать объект в строку JSON, используя библиотеку, но что мне делать со строкой?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Самый простой способ - метод расширения PostAsJsonAsync ()

Этот метод будет обрабатывать любую сериализацию объекта, которая необходима.

Из документации он можетбыть найденным

Пространство имен: System.Net.Http Сборка: System.Net.Http.Formatting (в System.Net.Http.Formatting.dll)

Придуманный пример из Интернета:

static async Task<Uri> CreateProductAsync(Product product)
{
    HttpResponseMessage response = await client.PostAsJsonAsync(
        "api/products", product);
    response.EnsureSuccessStatusCode();

    // return URI of the created resource.
    return response.Headers.Location;
}
0 голосов
/ 30 апреля 2019

Это пример POST, который может быть полезен:

 var values = new Dictionary<string, string>
    {
       { "thing1", "hello" },
       { "thing2", "world" }
    };

    var content = new FormUrlEncodedContent(values);

    var response = await client.PostAsync("http://www.example.com/recepticle.aspx", content);

    var responseString = await response.Content.ReadAsStringAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...