HTTP-támogatás a .NET-ben

A Hypertext Transfer Protocol (vagy HTTP) egy protokoll, amely erőforrásokat kér le egy webkiszolgálóról. Az System.Net.Http.HttpClient osztály lehetővé teszi HTTP-kérések küldését és HTTP-válaszok fogadását egy URI által azonosított erőforrásból. A weben számos erőforrástípus érhető el, a HTTP pedig az erőforrások elérésére szolgáló kérési módszerek készletét határozza meg.

HTTP-kérési metódusok

A kérelemmetelyeket számos tényező különbözteti meg, először az ige , de a következő jellemzők is:

HTTP method Idempotens Gyorsítótárazható Biztonságos
GET ✔️ Igen ✔️ Igen ✔️ Igen
POST ❌ Nem ️ †Rarely ❌ Nem
PUT ✔️ Igen ❌ Nem ❌ Nem
PATCH ❌ Nem ❌ Nem ❌ Nem
DELETE ✔️ Igen ❌ Nem ❌ Nem
HEAD ✔️ Igen ✔️ Igen ✔️ Igen
OPTIONS ✔️ Igen ❌ Nem ✔️ Igen
TRACE ✔️ Igen ❌ Nem ✔️ Igen
CONNECT ❌ Nem ❌ Nem ❌ Nem

†A POST metódus csak akkor gyorsítótárazható, ha a megfelelő Cache-Control vagy Expires válaszfejlécek vannak jelen. Ez a gyakorlatban nagyon ritka.

HTTP-állapotkódok

A .NET átfogó támogatást nyújt a HTTP protokollhoz, amely a legtöbb internetes forgalmat bonyolítja a HttpClient. További információ: HTTP-kérések készítése a HttpClient-osztálysal. Az alkalmazások http protokollhibákat kapnak egy HttpRequestException. A HTTP-állapotkódokat a rendszer be- vagy bejelenti HttpResponseMessageHttpRequestExceptionHttpResponseMessage.StatusCode abban az HttpRequestException.StatusCode esetben, ha a hívott metódus nem ad vissza válaszüzenetet. A hibakezeléssel kapcsolatos további információkért lásd a HTTP-hibakezelést, és az állapotkódokkal kapcsolatos további információkat az RFC 9110 HTTP Szemantikája: Állapotkódok című témakörben talál.

Információs állapotkódok

Az információs állapotkódok köztes választ tükröznek. A köztes válaszok többségét például HttpStatusCode.Continuebelsőleg HttpClient kezelik, és soha nem kerülnek felszínre a felhasználó számára.

HTTP-állapotkód HttpStatusCode
100 HttpStatusCode.Continue
101 HttpStatusCode.SwitchingProtocols
102 HttpStatusCode.Processing
103 HttpStatusCode.EarlyHints

Sikeres állapotkódok

A sikeres állapotkódok azt jelzik, hogy az ügyfél kérését sikeresen fogadták, megértették és elfogadták.

HTTP-állapotkód 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

Átirányítási állapotkódok

Az átirányítási állapotkódok megkövetelik, hogy a felhasználói ügynök műveletet hajt végre a kérés teljesítéséhez. Az automatikus átirányítás alapértelmezés szerint be van kapcsolva, és módosítható a következővel HttpClientHandler.AllowAutoRedirect : vagy SocketsHttpHandler.AllowAutoRedirect.

HTTP-állapotkód HttpStatusCode
300 HttpStatusCode.MultipleChoices vagy HttpStatusCode.Ambiguous
301 HttpStatusCode.MovedPermanently vagy HttpStatusCode.Moved
302 HttpStatusCode.Found vagy HttpStatusCode.Redirect
303 HttpStatusCode.SeeOther vagy HttpStatusCode.RedirectMethod
304 HttpStatusCode.NotModified
305 HttpStatusCode.UseProxy
306 HttpStatusCode.Unused
307 HttpStatusCode.TemporaryRedirect vagy HttpStatusCode.RedirectKeepVerb
308 HttpStatusCode.PermanentRedirect

Ügyfél hibaállapot-kódjai

Az ügyfél hibaállapot-kódjai azt jelzik, hogy az ügyfél kérése érvénytelen volt.

HTTP-állapotkód 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 Teáskann 🫖 vagyok
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

Kiszolgálói hibaállapot-kódok

A kiszolgáló hibaállapotkódjai azt jelzik, hogy a kiszolgáló váratlan feltételt észlelt, amely megakadályozta a kérés teljesítését.

HTTP-állapotkód 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

Lásd még