Bagikan melalui


Dukungan HTTP di .NET

Hypertext Transfer Protocol (atau HTTP) adalah protokol untuk meminta sumber daya dari server web. Kelas ini System.Net.Http.HttpClient memaparkan kemampuan untuk mengirim permintaan HTTP dan menerima respons HTTP dari sumber daya yang diidentifikasi oleh URI. Banyak jenis sumber daya yang tersedia di web, dan HTTP menentukan serangkaian metode permintaan untuk mengakses sumber daya ini.

Metode permintaan HTTP

Metode permintaan dibingkai melalui beberapa faktor, pertama dengan kata kerjanya tetapi juga dengan karakteristik berikut:

  • Metode permintaan idempogen jika dapat berhasil diproses beberapa kali tanpa mengubah hasilnya. Untuk informasi selengkapnya, lihat RFC 9110: 9.2.2. Metode Idempotensi.
  • Metode permintaan dapat di-cache ketika respons yang sesuai dapat disimpan untuk digunakan kembali. Untuk informasi selengkapnya, lihat RFC 9110: Bagian 9.2.3. Metode dan Penembolokan.
  • Metode permintaan dianggap sebagai metode yang aman jika tidak mengubah status sumber daya. Semua metode yang aman juga idempotensi, tetapi tidak semua metode idempotensi dianggap aman. Untuk informasi selengkapnya, lihat RFC 9110: Bagian 9.2.1. metode Brankas.
Metode HTTP Idempotensi Dapat di-cache Aman
GET ✔️ Ya ✔️ Ya ✔️ Ya
POST ❌ Tidak ️ †Rarely ❌ Tidak
PUT ✔️ Ya ❌ Tidak ❌ Tidak
PATCH ❌ Tidak ❌ Tidak ❌ Tidak
DELETE ✔️ Ya ❌ Tidak ❌ Tidak
HEAD ✔️ Ya ✔️ Ya ✔️ Ya
OPTIONS ✔️ Ya ❌ Tidak ✔️ Ya
TRACE ✔️ Ya ❌ Tidak ✔️ Ya
CONNECT ❌ Tidak ❌ Tidak ❌ Tidak

† Metode POST ini hanya dapat di-cache ketika header yang sesuai Cache-Control atau Expires respons ada. Ini sangat jarang dalam praktiknya.

Kode status HTTP

.NET menyediakan dukungan komprehensif untuk protokol HTTP, yang memperkirakan sebagian besar lalu lintas internet, dengan HttpClient. Untuk informasi selengkapnya, lihat Membuat permintaan HTTP dengan kelas HttpClient. Aplikasi menerima kesalahan protokol HTTP dengan menangkap HttpRequestException. Kode status HTTP dilaporkan HttpResponseMessage dengan HttpResponseMessage.StatusCode atau dalam HttpRequestException jika HttpRequestException.StatusCode metode yang dipanggil tidak mengembalikan pesan respons. Untuk informasi selengkapnya tentang penanganan kesalahan, lihat Penanganan kesalahan HTTP, dan untuk informasi selengkapnya tentang kode status, lihat RFC 9110, HTTP Semantics: Kode Status.

Kode status informasi

Kode status informasi mencerminkan respons sementara. Sebagian besar respons sementara, misalnya HttpStatusCode.Continue, ditangani secara internal dengan HttpClient dan tidak pernah muncul kepada pengguna.

Kode status HTTP HttpStatusCode
100 HttpStatusCode.Continue
101 HttpStatusCode.SwitchingProtocols
102 HttpStatusCode.Processing
103 HttpStatusCode.EarlyHints

Kode status berhasil

Kode status yang berhasil menunjukkan bahwa permintaan klien berhasil diterima, dipahami, dan diterima.

Kode status 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

Kode status pengalihan

Kode status pengalihan mengharuskan agen pengguna mengambil tindakan untuk memenuhi permintaan. Pengalihan otomatis diaktifkan secara default, dapat diubah dengan HttpClientHandler.AllowAutoRedirect atau SocketsHttpHandler.AllowAutoRedirect.

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

Kode status kesalahan klien

Kode status kesalahan klien menunjukkan bahwa permintaan klien tidak valid.

Kode status HTTP 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 Aku teko 🫖
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

Kode status kesalahan server

Kode status kesalahan server menunjukkan bahwa server mengalami kondisi tak terduga yang mencegahnya memenuhi permintaan.

Kode status HTTP 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

Lihat juga