Sie dienen beide dem gleichen Zweck.
HttpWebRequest
/HttpWebResponse
sind seit der ersten Version von .NET zur Verfügung und ist nach wie vor ein absolut gültiger Ansatz.
HttpClient
HttpClient
(die HttpRequestMessage
und HttpResponseMessage
verwendet, um Anfragen und Antworten zu repräsentieren) wurde in .NET 4.5 eingeführt und bietet eine vollständig asynchrone API, zusammen mit einem neuen Modell für Anfrage und Antwort Inhalt; intern stützt es sich immer noch auf HttpWebRequest
/HttpWebResponse
.
Ein wichtiger Unterschied ist, dass HttpWebRequest/Response
die Anforderung und Antwort von einer Client-Sicht nur repräsentieren, während HttpRequestMessage/HttpResponseMessage
Verwendung von entweder einem Client sein kann, oder einen Server (ASP.NET-API verwendet diese Typen mit der kommunizieren Klient).
Sie können diejenige verwenden, mit der Sie am bequemsten sind; Beachten Sie jedoch, dass der Code, der ihn verwendet, asynchron sein muss, da HttpClient
asynchron ist.
Woher wissen Sie, dass HttpRequestMessage intern auf HttpWebRequest angewiesen ist? Ich sehe keine Vererbung oder gemeinsames Objekt in der Klassendefinition: https://msdn.microsoft.com/fr-fr/library/system.net.http.httprequestmessage%28v=vs.118%29.aspx – Elo
@Elo, Sie müssen nicht von einer Klasse erben, um sich darauf zu verlassen ... Wie auch immer, ich sagte, dass HttpClient (nicht HttpRequestMessage) auf HttpWebRequest angewiesen ist. Das stimmt jedoch nicht genau. HttpClient verwendet einen HttpClientHandler, der selbst HttpWebRequest verwendet. Es wird nicht explizit in der Dokumentation erwähnt, aber Sie können es sehen, wenn Sie den Code betrachten. –