Все ли методы 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/");
...
}