超文本傳輸通訊協定 (或 HTTP) 是一種從網頁伺服器要求資源的通訊協定。 類別 System.Net.Http.HttpClient 會公開從 URI 所識別的資源傳送 HTTP 要求和接收 HTTP 回應的能力。 網路上許多可用的資源類型,且 HTTP 會定義一組要求方法來存取這些資源。
HTTP 要求方法
要求方法會透過數個因素來區分,首先是它們的動詞,但也有下列特性:
- 如果要求方法可以成功處理多次,而不需要變更結果,則要求方法會是 等冪 的。 如需詳細資訊,請參閱 RFC 9110:9.2.2。等冪方法。
- 當某要求方法的對應回應可以被儲存以供後續使用時,該方法是可快取的。 如需詳細資訊,請參閱 RFC 9110:第 9.2.3 節。方法和快取。
- 如果要求方法未修改資源的狀態,則會將其視為 安全的方法 。 所有 安全的方法 也是 等冪的,但並不是所有 等冪的方法都被視為 安全。 如需詳細資訊,請參閱 RFC 9110:第 9.2.1 節。安全方法。
| HTTP 方法 | 為等冪 | 可快取的 | 安全 |
|---|---|---|---|
GET |
✔️ 是的 | ✔️ 是的 | ✔️ 是的 |
POST |
❌ 否 | ⚠️ †很少 | ❌ 否 |
PUT |
✔️ 是的 | ❌ 否 | ❌ 否 |
PATCH |
❌ 否 | ❌ 否 | ❌ 否 |
DELETE |
✔️ 是的 | ❌ 否 | ❌ 否 |
HEAD |
✔️ 是的 | ✔️ 是的 | ✔️ 是的 |
OPTIONS |
✔️ 是的 | ❌ 否 | ✔️ 是的 |
TRACE |
✔️ 是的 | ❌ 否 | ✔️ 是的 |
CONNECT |
❌ 否 | ❌ 否 | ❌ 否 |
†僅當適當的
POST或Cache-Control響應標頭存在時,Expires方法才能被快取。 這在實務上非常罕見。
HTTP 狀態碼
.NET 提供 HTTP 通訊協定的完整支援,此通訊協定會使用 HttpClient來說明大部分因特網流量。 如需詳細資訊,請參閱 使用 HttpClient 類別提出 HTTP 要求。 應用程式會藉由攔截 HttpRequestException來接收 HTTP 通訊協定錯誤。 HTTP 狀態代碼會在HttpResponseMessage中使用HttpResponseMessage.StatusCode回報,或者在方法呼叫不傳回回應消息時,使用HttpRequestException和HttpRequestException.StatusCode回報。 如需錯誤處理的詳細資訊,請參閱 HTTP 錯誤處理,如需狀態代碼的詳細資訊,請參閱 RFC 9110、HTTP 語意:狀態代碼。
信息狀態代碼
資訊狀態碼會反映過渡性回應。 大部分的過渡回應,例如 HttpStatusCode.Continue,會在內部由 HttpClient 處理,而且永遠不會向用戶呈現。
| HTTP 狀態代碼 | HttpStatusCode |
|---|---|
100 |
HttpStatusCode.Continue |
101 |
HttpStatusCode.SwitchingProtocols |
102 |
HttpStatusCode.Processing |
103 |
HttpStatusCode.EarlyHints |
成功狀態代碼
成功的狀態代碼表示已成功接收、瞭解和接受用戶端的要求。
| 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 |
重新導向狀態碼
重新導向狀態代碼要求使用者代理程序採取動作以完成要求。 預設會開啟自動重新導向,可以使用 HttpClientHandler.AllowAutoRedirect 或 SocketsHttpHandler.AllowAutoRedirect 變更。
用戶端錯誤狀態代碼
用戶端錯誤狀態代碼表示用戶端的要求無效。
伺服器錯誤狀態代碼
伺服器錯誤狀態代碼表示伺服器遇到無法滿足要求的非預期狀況。