Delen via


HTTP-ondersteuning in .NET

Hypertext Transfer Protocol (of HTTP) is een protocol voor het aanvragen van resources vanaf een webserver. De System.Net.Http.HttpClient klasse biedt de mogelijkheid om HTTP-aanvragen te verzenden en HTTP-antwoorden te ontvangen van een resource die is geïdentificeerd door een URI. Veel typen resources zijn beschikbaar op internet en HTTP definieert een set aanvraagmethoden voor toegang tot deze resources.

HTTP-aanvraagmethoden

De aanvraagmethoden worden onderscheiden via verschillende factoren, eerst door hun werkwoord , maar ook door de volgende kenmerken:

HTTP-methode Is idempotent Kan in de cache worden opgeslagen Is veilig
GET ✔️ Ja ✔️ Ja ✔️ Ja
POST ❌ Nee ⚠† !Rarely ❌ Nee
PUT ✔️ Ja ❌ Nee ❌ Nee
PATCH ❌ Nee ❌ Nee ❌ Nee
DELETE ✔️ Ja ❌ Nee ❌ Nee
HEAD ✔️ Ja ✔️ Ja ✔️ Ja
OPTIONS ✔️ Ja ❌ Nee ✔️ Ja
TRACE ✔️ Ja ❌ Nee ✔️ Ja
CONNECT ❌ Nee ❌ Nee ❌ Nee

†De POST methode kan alleen in de cache worden opgeslagen wanneer de juiste Cache-Control headers of Expires antwoordheaders aanwezig zijn. Dit is in de praktijk zeer ongebruikelijk.

HTTP-statuscode

.NET biedt uitgebreide ondersteuning voor het HTTP-protocol, dat rekening houdt met het meeste internetverkeer, met de HttpClient. Zie HTTP-aanvragen maken met de HttpClient-klasse voor meer informatie. Toepassingen ontvangen HTTP-protocolfouten door een HttpRequestException. HTTP-statuscodes worden gerapporteerd met HttpResponseMessage de HttpResponseMessage.StatusCode of in HttpRequestException het geval de HttpRequestException.StatusCode aangeroepen methode geen antwoordbericht retourneert. Zie HTTP-foutafhandeling voor meer informatie over foutafhandeling en zie RFC 9110, HTTP-Semantiek: Statuscodes voor meer informatie over foutafhandeling.

Informatieve statuscodes

De informatieve statuscodes weerspiegelen een tussentijdse reactie. De meeste tussentijdse antwoorden worden bijvoorbeeld HttpStatusCode.Continueintern verwerkt en HttpClient worden nooit aan de gebruiker blootgesteld.

HTTP-statuscode HttpStatusCode
100 HttpStatusCode.Continue
101 HttpStatusCode.SwitchingProtocols
102 HttpStatusCode.Processing
103 HttpStatusCode.EarlyHints

Geslaagde statuscodes

De geslaagde statuscodes geven aan dat de aanvraag van de client is ontvangen, begrepen en geaccepteerd.

HTTP-statuscode 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

Omleidingsstatuscodes

Omleidingsstatuscodes vereisen dat de gebruikersagent actie onderneemt om te voldoen aan de aanvraag. Automatische omleiding is standaard ingeschakeld, kan worden gewijzigd met HttpClientHandler.AllowAutoRedirect of SocketsHttpHandler.AllowAutoRedirect.

HTTP-statuscode HttpStatusCode
300 HttpStatusCode.MultipleChoices of HttpStatusCode.Ambiguous
301 HttpStatusCode.MovedPermanently of HttpStatusCode.Moved
302 HttpStatusCode.Found of HttpStatusCode.Redirect
303 HttpStatusCode.SeeOther of HttpStatusCode.RedirectMethod
304 HttpStatusCode.NotModified
305 HttpStatusCode.UseProxy
306 HttpStatusCode.Unused
307 HttpStatusCode.TemporaryRedirect of HttpStatusCode.RedirectKeepVerb
308 HttpStatusCode.PermanentRedirect

Clientfoutstatuscodes

De foutcodes van de client geven aan dat de aanvraag van de client ongeldig is.

HTTP-statuscode HttpStatusCode
400 HttpStatusCode.BadRequest
401 HttpStatusCode.Unauthorized
402 HttpStatusCode.PaymentRequired
403 HttpStatusCode.Forbidden
404 HttpStatusCode.NotFound
405 HttpStatusCode.MethodNotAllowed
406 HttpStatusCode.NotAcceptable
407 HttpStatusCode.ProxyAuthenticationRequired
408 HttpStatusCode.RequestTimeout
409 HttpStatusCode.Conflict
410 HttpStatusCode.Gone
411 HttpStatusCode.LengthRequired
412 HttpStatusCode.PreconditionFailed
413 HttpStatusCode.RequestEntityTooLarge
414 HttpStatusCode.RequestUriTooLong
415 HttpStatusCode.UnsupportedMediaType
416 HttpStatusCode.RequestedRangeNotSatisfiable
417 HttpStatusCode.ExpectationFailed
418 Ik ben een theepot 🫖
421 HttpStatusCode.MisdirectedRequest
422 HttpStatusCode.UnprocessableEntity
423 HttpStatusCode.Locked
424 HttpStatusCode.FailedDependency
426 HttpStatusCode.UpgradeRequired
428 HttpStatusCode.PreconditionRequired
429 HttpStatusCode.TooManyRequests
431 HttpStatusCode.RequestHeaderFieldsTooLarge
451 HttpStatusCode.UnavailableForLegalReasons

Serverfoutstatuscodes

De foutcodes van de server geven aan dat de server een onverwachte voorwaarde heeft aangetroffen waardoor deze niet aan de aanvraag kan voldoen.

HTTP-statuscode HttpStatusCode
500 HttpStatusCode.InternalServerError
501 HttpStatusCode.NotImplemented
502 HttpStatusCode.BadGateway
503 HttpStatusCode.ServiceUnavailable
504 HttpStatusCode.GatewayTimeout
505 HttpStatusCode.HttpVersionNotSupported
506 HttpStatusCode.VariantAlsoNegotiates
507 HttpStatusCode.InsufficientStorage
508 HttpStatusCode.LoopDetected
510 HttpStatusCode.NotExtended
511 HttpStatusCode.NetworkAuthenticationRequired

Zie ook