Json 如何在.net内核中使用httpClient发送可序列化的请求对象?
我是.net的新手,我正在寻找一种方法(如果存在的话)能够将请求对象传递给http客户机,而无需“手动”将其序列化为json。我在过去做过一些java实现,在那里它是在幕后完成的,我认为它在.netCore中也应该是可能的 这是请求对象:Json 如何在.net内核中使用httpClient发送可序列化的请求对象?,json,rest,asp.net-core,httpclient,Json,Rest,Asp.net Core,Httpclient,我是.net的新手,我正在寻找一种方法(如果存在的话)能够将请求对象传递给http客户机,而无需“手动”将其序列化为json。我在过去做过一些java实现,在那里它是在幕后完成的,我认为它在.netCore中也应该是可能的 这是请求对象: public class Request { [JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)] public int Number { get; set
public class Request
{
[JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)]
public int Number { get; set; }
}
我在寻找这样的东西:
var request = new Request {Number=2};
client.PostAsync("url", request)
我发现了一个类似的实现,但它似乎不兼容。netcore兼容:
netcore有类似的功能吗
谢谢您仍然需要将对象序列化为JSON字符串
所引用的
Microsoft.AspNet.WebApi.Client
库将具有postsjsonasync
扩展方法以及许多其他扩展HttpClient
的方法
内部看起来可能是这样的
public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient client, string requestUri, T obj) {
var json = JsonConvert.SerializeObject(obj);
var content = new StringContent(json, Encoding.UTF8, "application/json");
return client.PostAsync(requestUri, content);
}
PostAsJsonAsync
已经存在于框架中,它只是一个扩展,需要一个额外的using语句。实际上这就是我想要的答案。不知何故,我没有找到这个PostAsJsonAsync
扩展方法,但它确实是可用的,它满足了我的需求。谢谢。Microsoft.AspNet.WebApi.Client
targets.NET标准。命名有点不合适,因为它是为原始的ASP.NET Web Api(而不是Core)编写的,但它与Core 100%兼容。它所做的只是将扩展添加到非特定于Web Api的HttpClient
。
using System.Net.Http;
//...
var request = new Request { Number = 2 };
var response = await client.PostAsJsonAsync("url", request);