使用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>);
来获得jsonInString
值JsonConvert.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"));