Пожалуйста, обратитесь к следующему фрагменту кода, чтобы сделать запрос на публикацию, вы можете выполнить запрос на то же самое, просто измените метод на Put.
protected async Task<Tuple<HttpStatusCode, TOutput>> MakeRequest<TInput, TOutput>(string baseAdrress, string apiUrl, TInput data)
{
var contentData = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri(baseAdrress);
var response = await client.SendAsync(new HttpRequestMessage
{
RequestUri = new Uri(apiUrl, UriKind.Relative),
Content = contentData,
Method = HttpMethod.Post
});
if (response.StatusCode == HttpStatusCode.InternalServerError)
{
return Tuple.Create(HttpStatusCode.InternalServerError, default(TOutput));
}
var stringData = await response.Content.ReadAsStringAsync();
var jsonData = JsonConvert.DeserializeObject<TOutput>(stringData);
return Tuple.Create(HttpStatusCode.OK, jsonData);
}
Приведенный выше код является просто быстрой демонстрацией использования http-клиента, в реальной жизни вы должны использовать вместо него HttpClientFactory. Есть несколько способов использования HttpClientFactory, которые вы можете прочитать здесь в Microsoft Docs
Использование HttpClient напрямую может привести к некоторым проблемам, о которых упомянул M $ «В качестве первой проблемы, хотя этот класс является одноразовым, использование его с оператором using не лучший выбор, поскольку даже при удалении объекта HttpClient, лежащего в основе Сокет не освобождается сразу и может вызвать серьезную проблему с именем «исчерпание сокетов». "