如何在.net核心中使用httpClient发送可序列化的请求对象?

时间:2018-06-15 12:32:44

标签: json rest asp.net-core httpclient

我是.net的新手,我正在寻找一种方法(如果存在)能够将请求对象传递给http客户端,而无需“手动”将其序列化为json。我在过去做了一些java实现,并且在那里完成了它,我认为它也应该可以在.netCore

这是请求对象:

public class Request
{
    [JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)]
    public int Number { get; set; }
}

我正在寻找类似的东西:

var request = new Request {Number=2};
client.PostAsync("url", request)

我发现了类似的实现,但似乎并不是.netcore兼容: https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Client/5.2.4-preview1

.netcore有什么类似的东西吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您仍然需要将对象序列化为JSON字符串。

相关引用的Microsoft.AspNet.WebApi.Client库将使用PostAsJsonAsync扩展方法以及许多其他方法来扩展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);    
}

并使用

using System.Net.Http;

//...

var request = new Request { Number = 2 };
var response = await client.PostAsJsonAsync("url", request);