maggior parte delle proprietà per la personalizzazione richieste sono definiti in HttpClientHandler
, questa classe è una sottoclasse di HttpMessageHandler
, classe definita in questo modo:Quale metodo SendAsync viene chiamato quando un HttpClientHandler viene passato a HttpClient
public abstract class HttpMessageHandler : IDisposable
{
protected internal abstract Task<HttpResponseMessage> SendAsync
(HttpRequestMessage request, CancellationToken cancellationToken);
public void Dispose();
protected virtual void Dispose (bool disposing);
}
Il libro <C#5.0 in a nutshell>
viene chiamato il metodo SendAsync
in HttpMessageHandler
quando viene chiamato il metodo SendAsync
HttpClient
. Ma la classe HttpClient
definisce anche un metodo SendAsync
, quando chiamiamo questo metodo su un'istanza di HttpClient
, che viene chiamato SendAsync
?
In sintesi tua domanda: HttpClient ha un metodo di SendAsync. HttpMessageHandler ha un metodo SendAsync (sovrascritto da HttpClientHandler). HttpClient.SendAsync chiama HttpMessageHandler.SendAync. Qual è il problema? – dtb
Intendi HttpClient.SendAsync chiama il metodo SendAsync di HttpMessageHandler, non il suo? – Allen4Tech
Quando si chiama HttpClient.SendAsync, viene eseguito HttpClient.SendAsync. Quando viene eseguito HttpClient.SendAsync, chiama HttpMessageHandler.SendAsync. – dtb