अनुरोध अनुकूलित करने के लिए गुण के अधिकांश HttpClientHandler
में परिभाषित कर रहे हैं, इस वर्ग के HttpMessageHandler
का एक उपवर्ग है, वर्ग इस तरह परिभाषित किया गया:कौन सा SendAsync विधि है जब एक HttpClientHandler 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);
}
किताब <C#5.0 in a nutshell>
ने विधि HttpMessageHandler
में विधि कहा है जब हम HttpClient
की SendAsync
विधि को कॉल करते हैं। लेकिन HttpClient
कक्षा SendAsync
विधि को भी परिभाषित करती है, जब हम इस विधि को HttpClient
के उदाहरण पर कॉल करते हैं, जो SendAsync
कहलाता है?
HttpMessageInvoker & HttpClient
class HttpMessageInvoker
{
private HttpMessageHandler handler;
public HttpMessageInvoker(HttpMessageHandler handler)
{
this.handler = handler;
}
public virtual void SendAsync()
{
Console.WriteLine("HttpMessageInvoker.SendAsync");
this.handler.SendAsync();
}
}
class HttpClient : HttpMessageInvoker
{
public HttpClient(HttpMessageHandler handler)
: base(handler)
{
}
public override void SendAsync()
{
Console.WriteLine("HttpClient.SendAsync");
base.SendAsync();
}
}
HttpMessageHandler & HttpClientHandler
abstract class HttpMessageHandler
{
protected internal abstract void SendAync();
}
class HttpClientHandler : HttpMessageHandler
{
protected internal override void SendAync()
{
Console.WriteLine("HttpClientHandler.SendAsync");
}
}
तो अगर आपफोन:
अपने प्रश्न संक्षेप में: HttpClient एक विधि SendAsync है। HttpMessageHandler में एक तरीका SendAsync है (HttpClientHandler द्वारा overriden)। HttpClient.SendAsync HttpMessageHandler.SendAync को कॉल करता है। समस्या क्या है? – dtb
क्या आपका मतलब है HttpClient.SendAsync HttpMessageHandler की SendAsync विधि को कॉल करता है, न कि स्वयं? – Allen4Tech
जब आप HttpClient.SendAsync को कॉल करते हैं, तो HttpClient.SendAsync निष्पादित किया जाता है। जब HttpClient.SendAsync निष्पादित किया जाता है, तो यह HttpMessageHandler.SendAsync को कॉल करता है। – dtb