Aracılığıyla paylaş


.NET'te HTTP desteği

Köprü Metni Aktarım Protokolü (veya HTTP), bir web sunucusundan kaynak istemeye yönelik bir protokoldür. System.Net.Http.HttpClient sınıfı, URI tarafından tanımlanan bir kaynaktan HTTP istekleri gönderme ve HTTP yanıtları alma özelliğini kullanıma sunar. Web'de birçok kaynak türü vardır ve HTTP bu kaynaklara erişmek için bir dizi istek yöntemi tanımlar.

HTTP isteği yöntemleri

İstek yöntemleri, önce fiil ancak aynı zamanda aşağıdaki özelliklere göre çeşitli faktörlerle ayırt edilir:

  • Bir istek yöntemi, sonucu değiştirmeden birden fazla kez başarıyla işlenebiliyorsa idempotent'dur. Daha fazla bilgi için bkz. RFC 9110: 9.2.2 .Idempotent Yöntemleri.
  • Bir istek yöntemi önbelleğe alınabilen, karşılık gelen yanıtı yeniden kullanılmak üzere depolanabildiğinde olur. Daha fazla bilgi için bkz. rfc 9110: Bölüm 9.2.3. Yöntemler ve Önbelleğe Alma.
  • İstek yöntemi, kaynağın durumunu değiştirmezsegüvenli bir yöntem olarak kabul edilir. tüm güvenli yöntemler de yöntemleri güvenli olarak kabul edilmez. Daha fazla bilgi için bkz. RFC 9110: Bölüm 9.2.1. Güvenli Yöntemler.
HTTP yöntemi İdempotent mi? Önbelleğe alınabilir Güvenlidir
GET ✔️ Evet ✔️ Evet ✔️ Evet
POST ❌ Hayır ️ ⚠Nadiren ❌ Hayır
PUT ✔️ Evet ❌ Hayır ❌ Hayır
PATCH ❌ Hayır ❌ Hayır ❌ Hayır
DELETE ✔️ Evet ❌ Hayır ❌ Hayır
HEAD ✔️ Evet ✔️ Evet ✔️ Evet
OPTIONS ✔️ Evet ❌ Hayır ✔️ Evet
TRACE ✔️ Evet ❌ Hayır ✔️ Evet
CONNECT ❌ Hayır ❌ Hayır ❌ Hayır

POST yöntemi yalnızca uygun Cache-Control veya Expires yanıt üst bilgileri mevcut olduğunda önbelleğe alınır. Bu pratikte çok nadirdir.

HTTP durum kodları

.NET, HttpClientile çoğu İnternet trafiğini hesaplayan HTTP protokolü için kapsamlı destek sağlar. Daha fazla bilgi için bkz. HttpClient sınıfıyla HTTP istekleri oluşturma. Uygulamalar bir HttpRequestExceptionyakalayarak HTTP protokolü hataları alır. HTTP durum kodları, çağrılan yöntem bir yanıt iletisi döndürmediğinde ya HttpResponseMessage ile HttpResponseMessage.StatusCode ya da HttpRequestException ile HttpRequestException.StatusCode olarak bildirilir. Hata işleme hakkında daha fazla bilgi için bkz. http hata işlemeve durum kodları hakkında daha fazla bilgi için bkz. RFC 9110, HTTP Semantiği: Durum Kodları .

Bilgilendirme durum kodları

Bilgilendirme durum kodları bir ara yanıtı yansıtır. Geçici yanıtların çoğu, örneğin HttpStatusCode.Continue, HttpClient ile dahili olarak işlenir ve hiçbir zaman kullanıcıya sunulmaz.

HTTP durum kodu HttpStatusCode
100 HttpStatusCode.Continue
101 HttpStatusCode.SwitchingProtocols
102 HttpStatusCode.Processing
103 HttpStatusCode.EarlyHints

Başarılı durum kodları

Başarılı durum kodları, istemcinin isteğinin başarıyla alındığını, anlaşıldığını ve kabul edildiğine işaret eder.

HTTP durum kodu 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

Yeniden yönlendirme durum kodları

Yeniden yönlendirme durum kodları, kullanıcı aracısının isteği yerine getirmek için eylem gerçekleştirmesini gerektirir. Otomatik yeniden yönlendirme varsayılan olarak açıktır, HttpClientHandler.AllowAutoRedirect veya SocketsHttpHandler.AllowAutoRedirectile değiştirilebilir.

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

İstemci hata durum kodları

İstemci hata durum kodları, istemcinin isteğinin geçersiz olduğunu gösterir.

HTTP durum kodu 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 Ben bir çaydanlığım 🫖
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

Sunucu hata durum kodları

Sunucu hata durum kodları, sunucunun isteği karşılamasını engelleyen beklenmeyen bir koşulla karşılaştığını gösterir.

HTTP durum kodu 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

Ayrıca bkz.