Все ли методы HttpClient внутренне вызывают метод SendAsync?

Все ли методы HttpClient т.е. GetAsync, PostAsync и т. д. внутренне вызывать SendAsync метод?

1 ответ

Решение

Да, HttpClient использует HttpMessageHandler внизу, чтобы выполнить все запросы HTTP. HttpMessageHandler метод Task<HttpResponseMessage> SendAsync(HttpRequestMessage, CancellationToken) это то, что называется HttpClient,

Реализация по умолчанию абстрактного класса HttpMessageHandler является HttpClientHandler,

Вы можете пройти в своем собственном HttpMessageHandler реализация к HttpClient конструктор, который принимает один. Хотя это маловероятно, что вам когда-либо понадобится, есть приложения. Например, если вы хотите регистрировать каждый запрос HttpClient делает. Вы могли бы сделать LoggingHttpMessageHandler декоратор для HttpMessageHandler,

using (var handler = new HttpClientHandler())
using (var loggingHandler = new LoggingHttpClientHandler(handler, logger))
using (var client = new HttpClient(loggingHandler))
{
    // Logs "GET https://www.google.com/"
    var response = await client.GetAsync("https://www.google.com/");
    ...
}
Другие вопросы по тегам