C# 我正在寻找IHttpClientFactory->;HttpMethod.Post示例
我想使用IHttpClientFactory来使用我的API 关于如何使用SendAsync从API请求数据,有很多示例,但是如果我想使用IHttpClientFactory发布数据,该怎么办 我试过这样的东西,但是我在哪里通过这个物体呢C# 我正在寻找IHttpClientFactory->;HttpMethod.Post示例,c#,.net,api,httpclient,C#,.net,Api,Httpclient,我想使用IHttpClientFactory来使用我的API 关于如何使用SendAsync从API请求数据,有很多示例,但是如果我想使用IHttpClientFactory发布数据,该怎么办 我试过这样的东西,但是我在哪里通过这个物体呢 var request = new HttpRequestMessage(HttpMethod.Post, "https://localhost:44357/api/users/validateuser"); var client = _httpClient
var request = new HttpRequestMessage(HttpMethod.Post, "https://localhost:44357/api/users/validateuser");
var client = _httpClientFactory.CreateClient();
var response = await client.SendAsync(request);
下面是一个POST示例,它将一个序列化对象传递给API,并接收回JSON进行反序列化:
var result;
try
{
HttpClient client = _httpClientFactory.CreateClient("MyAPI");
//2 minute timeout on wait for response
client.Timeout = new TimeSpan(0, 2, 0);
//Create an HttpRequestMessage object and pass it into SendAsync()
HttpRequestMessage message = new HttpRequestMessage();
message.Headers.Add("Accept", "application/json");
message.Content = new StringContent(JsonConvert.SerializeObject(myObj), System.Text.Encoding.UTF8, "application/json");
message.Method = HttpMethod.Post;
message.RequestUri = new Uri(client.BaseAddress.ToString() + "someapiendpoint");
HttpResponseMessage response = await client.SendAsync(message);
result = await response.Content.ReadAsStringAsync();
//deserialize the result into proper object type
}
catch (Exception ex)
{
//Log exception
}
Content
是HttpContent
的类型,它是一个抽象类,您无法实例化它,但有多个类继承自它:
ByteArrayContent
,MultipartContent
,ReadOnlyMemoryContent
,StreamContent
,FormUrlEncodedContent
,MultipartFormDataContent
和StringContent
。最常见的是StringContent
,因此可以使用任何类型的JSON序列化程序(Newtonsoft
,System.Text.JSON
序列化程序等)将C#对象序列化为JSON字符串。
带有Newtonsoft.Json
的示例:
using Newtonsoft.Json;
var jsonContent = JsonConvert.SerializeObject(object);
request.Content = new StringContent(jsonContent);
虽然此代码唯一的答案实际上可能会回答用户的问题,但最好在其中包含一个解释,以便其他用户能够在原始问题的上下文中理解这意味着什么。@Christine感谢您的明智评论!在我的回答中增加了更好的描述。你的解释有很大的缺陷。
using Newtonsoft.Json;
var jsonContent = JsonConvert.SerializeObject(object);
request.Content = new StringContent(jsonContent);