Prise en charge de HTTP dans .NET
Le protocole HTTP (Hypertext Transfer Protocol) est un protocole permettant de demander des ressources à partir d’un serveur web. La classe System.Net.Http.HttpClient expose la possibilité d’envoyer des requêtes HTTP et de recevoir des réponses HTTP d’une ressource identifiée par un URI. De nombreux types de ressources sont disponibles sur le web, et HTTP définit un ensemble de méthodes de requête pour accéder à ces ressources.
Méthodes de requête HTTP
Les méthodes de demande sont différenciées par plusieurs facteurs, d’abord par leur verbe, mais aussi par les caractéristiques suivantes :
- Une méthode de requête est idempotente si elle peut être traitée plusieurs fois sans modifier le résultat. Pour obtenir plus d’informations, consultez RFC 9110 : 9.2.2. Méthodes Idempotentes.
- Une méthode de requête est mise en cache quand sa réponse correspondante peut être stockée pour la réutilisation. Pour plus d’informations, consultez RFC 9110 : Section 9.2.3. Méthodes et mise en cache.
- Une méthode de requête est considérée comme une méthode sécurisée si elle ne modifie pas l’état d’une ressource. Toutes les méthodes sécurisées sont également idempotentes, mais pas toutes les méthodes idempotentes sont considérées sécurisées. Pour plus d’informations, consultez RFC 9110 : Section 9.2.1. Méthodes sécurisées.
Méthode HTTP | Est idempotente | Peut être mis en cache | Est sûr |
---|---|---|---|
GET |
✔️ Oui | ✔️ Oui | ✔️ Oui |
POST |
❌ Non | ⚠️ †Rarement | ❌ Non |
PUT |
✔️ Oui | ❌ Non | ❌ Non |
PATCH |
❌ Non | ❌ Non | ❌ Non |
DELETE |
✔️ Oui | ❌ Non | ❌ Non |
HEAD |
✔️ Oui | ✔️ Oui | ✔️ Oui |
OPTIONS |
✔️ Oui | ❌ Non | ✔️ Oui |
TRACE |
✔️ Oui | ❌ Non | ✔️ Oui |
CONNECT |
❌ Non | ❌ Non | ❌ Non |
†La méthode
POST
est uniquement mise en cache lorsque les en-têtes de réponseCache-Control
ouExpires
appropriés sont présents. C’est très rare dans la pratique.
Codes d’état HTTP
.NET fournit une prise en charge complète du protocole HTTP, qui représente la majeure partie du trafic Internet, avec le HttpClient. Pour plus d’informations, consultez Effectuer des requêtes HTTP avec la classe HttpClient. Les applications obtiennent des erreurs de protocole HTTP quand elles interceptent une exception HttpRequestException. Les codes d’état HTTP sont signalés dans HttpResponseMessage avec le HttpResponseMessage.StatusCode ou dans HttpRequestException avec le HttpRequestException.StatusCode si la méthode appelée ne retourne pas de message de réponse. Pour plus d’informations sur la gestion des erreurs, consultez de gestion des erreurs HTTP et pour plus d’informations sur les codes d’état, consultez RFC 9110, Sémantique HTTP : Codes d’état.
Codes d’état informationnels
Les codes d’état d’information reflètent une réponse intermédiaire. La plupart des réponses intermédiaires, par exemple HttpStatusCode.Continue, sont gérées en interne avec HttpClient et ne sont jamais exposées à l’utilisateur.
Code d’état HTTP | HttpStatusCode |
---|---|
100 |
HttpStatusCode.Continue |
101 |
HttpStatusCode.SwitchingProtocols |
102 |
HttpStatusCode.Processing |
103 |
HttpStatusCode.EarlyHints |
Codes d’état de réussite
Les codes d’état réussis indiquent que la demande du client a été reçue, comprise et acceptée.
Code d’état HTTP | HttpStatusCode |
---|---|
200 |
HttpStatusCode.OK |
201 |
HttpStatusCode.Created |
202 |
HttpStatusCode.Accepted |
203 |
HttpStatusCode.NonAuthoritativeInformation |
204 |
HttpStatusCode.NoContent |
205 |
HttpStatusCode.ResetContent |
206 |
HttpStatusCode.PartialContent |
207 |
HttpStatusCode.MultiStatus |
208 |
HttpStatusCode.AlreadyReported |
226 |
HttpStatusCode.IMUsed |
Codes d’état de redirection
Les codes d’état de redirection nécessitent que l’agent utilisateur prenne des mesures pour répondre à la demande. La redirection automatique est activée par défaut, elle peut être modifiée avec HttpClientHandler.AllowAutoRedirect ou SocketsHttpHandler.AllowAutoRedirect.
Code d’état HTTP | HttpStatusCode |
---|---|
300 |
HttpStatusCode.MultipleChoices ou HttpStatusCode.Ambiguous |
301 |
HttpStatusCode.MovedPermanently ou HttpStatusCode.Moved |
302 |
HttpStatusCode.Found ou HttpStatusCode.Redirect |
303 |
HttpStatusCode.SeeOther ou HttpStatusCode.RedirectMethod |
304 |
HttpStatusCode.NotModified |
305 |
HttpStatusCode.UseProxy |
306 |
HttpStatusCode.Unused |
307 |
HttpStatusCode.TemporaryRedirect ou HttpStatusCode.RedirectKeepVerb |
308 |
HttpStatusCode.PermanentRedirect |
Codes d’état d’erreur du client
Les codes d’état d’erreur du client indiquent que la demande du client n’était pas valide.
Codes d’état d’erreur du serveur
Les codes d’état d’erreur du serveur indiquent que le serveur a rencontré une condition inattendue qui l’a empêché de répondre à la demande.
Voir aussi
- effectuer des requêtes HTTP avec la classe HttpClient
- Fabrique de client HTTP avec .NET
- Instructions pour l’utilisation de HttpClient
- améliorations apportées à la mise en réseau .NET