Prise en charge de HTTP dans .NET
Le protocole HTTP (Hypertext Transfer Protocol) permet de demander des ressources à partir d’un serveur web. La classe System.Net.Http.HttpClient permet 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 demande pour accéder à ces ressources.
Méthode de demande 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 demande est idempotente si elle peut être traitée plusieurs fois sans changer le résultat. Pour plus d’informations, consultez RFC 9110 : 9.2.2. Méthodes idempotentes.
- Une méthode de demande peut être mise en cache quand sa réponse correspondante peut être stockée pour réutilisation. Pour plus d’informations, consultez RFC 9110 : Section 9.2.3. Méthodes et mise en cache.
- Une méthode de demande est considérée comme une méthode sûre si elle ne modifie pas l’état d’une ressource. Toutes les méthodes sûres sont également idempotentes, mais toutes les méthodes idempotentes ne sont pas considérées comme sûres. Pour plus d’informations, consultez RFC 9110 : Section 9.2.1. Méthodes sûres.
HTTP method | Est idempotente | Peut être mise en cache | Est sûre |
---|---|---|---|
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
peut être mise en cache seulement quand les en-têtes de réponse appropriésCache-Control
ouExpires
sont présents. C’est très rare dans la pratique.
Codes d’état HTTP
.NET fournit un support complet du protocole HTTP, qui constitue la majeure partie du trafic Internet, avec 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 HttpResponseMessage.StatusCode ou dans HttpRequestException avec 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 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 informationnels reflètent une réponse intermédiaire. La plupart des réponses intermédiaires, par exemple HttpStatusCode.Continue, sont traitées en interne par 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 de réussite indiquent que la demande du client a été correctement 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 remplacée par 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.