3

HttpClientieGetAsyncなどのすべてのメソッドはPostAsync内部的にメソッドを呼び出しSendAsyncますか?

4

1 に答える 1

4

はい、すべての HTTP 要求を実行するために下にHttpClient使用します。メソッドはHttpMessageHandler、によって呼び出されるものです。HttpMessageHandlerTask<HttpResponseMessage> SendAsync(HttpRequestMessage, CancellationToken)HttpClient

抽象クラスのデフォルトの実装HttpMessageHandlerHttpClientHandler.

HttpMessageHandler独自の実装を、実装をHttpClient受け取るコンストラクターに渡すことができます。必要になる可能性はほとんどありませんが、アプリケーションはあります。たとえば、作成したすべてのリクエストをログに記録したい場合HttpClientLoggingHttpMessageHandlerのデコレータを作成できます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/");
    ...
}
于 2015-10-30T14:53:41.203 に答える