Если вы не возражаете против небольшой зависимости от библиотеки, Flurl.Http [раскрытие: я автор] делает этот uber-простой. Его метод PostJsonAsync
выполняет как сериализацию содержимого, так и установку заголовка content-type
, а ReceiveJson
десериализует ответ. Если требуется заголовок accept
, вам нужно будет установить это самостоятельно, но Flurl также предоставляет довольно чистый способ:
using Flurl.Http;
var result = await "http://example.com/"
.WithHeader("Accept", "application/json")
.PostJsonAsync(new { ... })
.ReceiveJson();
Flurl использует HttpClient и Json.NET под капотом, и это PCL, поэтому он будет работать на разных платформах.
PM> Install-Package Flurl.Http