使用HttpClient PostAsJsonAsync在ASP.NET Core中发送HTTP POST消息

我想发送dynamic的对象

new { x = 1, y = 2 }; 

作为HTTP POST消息的主体。 所以我试着写

 var client = new HttpClient(); 

但我找不到方法

 client.PostAsJsonAsync() 

所以我试图添加Microsoft.AspNetCore.Http.Extensions包到project.json并添加

 using Microsoft.AspNetCore.Http.Extensions; 

使用条款。 然而它并没有帮助我。

那么在ASP.NET Core中使用JSON主体发送POST请求最简单的方法是什么?

您应该添加对“Microsoft.AspNet.WebApi.Client”包的引用(请阅读此文章的示例)。

没有任何额外的扩展,你可以使用标准的PostAsync方法:

 client.PostAsync(uri, new StringContent(jsonInString, Encoding.UTF8, "application/json")); 

你可以通过调用JsonConvert.SerializeObject(<your object>);来获得jsonInStringJsonConvert.SerializeObject(<your object>);

我使用这个类:

 public class JsonContent : StringContent { public JsonContent(object obj) : base(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json") { } } 

使用示例:

 new HttpClient().PostAsync("http://...", new JsonContent(new { x = 1, y = 2 }); 

我会添加到接受的答案,你也想添加Accept头到httpClient

 httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));