Dukungan HTTP di .NET
Hypertext Transfer Protocol (atau HTTP) adalah protokol untuk meminta sumber daya dari server web. Kelas System.Net.Http.HttpClient mengekspos 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 dibedakan berdasarkan beberapa faktor, pertama berdasarkan kata kerja mereka tetapi juga dengan karakteristik berikut:
- Metode permintaan bersifat idempoten jika dapat diproses dengan sukses 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 Caching.
- Metode permintaan dianggap sebagai metode aman jika tidak mengubah status sumber daya. Semua metode aman juga idempotent, tetapi tidak semua metode idempotent dianggap aman. Untuk informasi selengkapnya, lihat RFC 9110: Bagian 9.2.1. Metode Aman.
Metode HTTP | Bersifat idempoten | Dapat di-cache | Aman |
---|---|---|---|
GET |
✔️ Ya | ✔️ Ya | ✔️ Ya |
POST |
❌ Tidak | ️ ⚠†Jarang | ❌ 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
hanya dapat di-cache ketika header responsCache-Control
atauExpires
yang sesuai ada. Ini sangat jarang dalam praktiknya.
Kode status HTTP
.NET menyediakan dukungan komprehensif untuk protokol HTTP, yang mencakup sebagian besar lalu lintas internet, dengan HttpClient. Untuk informasi selengkapnya, lihat Membuat permintaan HTTP dengan kelas HttpClient. Aplikasi menerima kesalahan protokol HTTP dengan cara menangkap HttpRequestException. Kode status HTTP dilaporkan dalam HttpResponseMessage dengan HttpResponseMessage.StatusCode atau di HttpRequestException dengan HttpRequestException.StatusCode jika metode yang disebut 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 ke 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 kesalahan server
Kode status kesalahan server menunjukkan bahwa server mengalami kondisi tak terduga yang mencegahnya memenuhi permintaan.