【发布时间】:2021-12-01 13:27:05
【问题描述】:
由于 WebClient 在 .NET 6 中已弃用,我想使用 WebClient 将以下代码转换为使用 HttpClient 调用 REST Web API 的等效代码:
using WebClient client = new();
client.Encoding = Encoding.UTF8;
client.Headers.Set(HttpRequestHeader.ContentType, "application/json");
client.Headers.Add("user_key", tokens[0]);
client.Headers.Add("Session_key", tokens[1]);
string json = JsonSerializer.Serialize(sms);
string serverResponse = client.UploadString(_baseUrl + "sms", "POST", json);
目前,我实现了以下解决方案:
HttpClient httpClient = _httpClientFactory.CreateClient();
HttpRequestMessage request = new(HttpMethod.Post, _baseUrl + "sms");
request.Headers.Add("user_key", tokens[0]);
request.Headers.Add("Session_key", tokens[1]);
string json = JsonSerializer.Serialize(sms);
request.Content = new StringContent(json, Encoding.UTF8, MediaTypeNames.Application.Json);
using HttpResponseMessage response = await httpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
我认为上述解决方案是替换原始代码的最干净,最有效的方法。专家可以确认一下吗?
【问题讨论】:
标签: c# api dotnet-httpclient .net-6.0