.NET 中的 HTTP 支援
超文字傳輸通訊協定 (或 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 method | 為等冪 | 可快取 | 安全 |
---|---|---|---|
GET |
✔️ 是的 | ✔️ 是的 | ✔️ 是的 |
POST |
❌ 否 | ⚠️ †Rarely | ❌ 否 |
PUT |
✔️ 是的 | ❌ 否 | ❌ 否 |
PATCH |
❌ 否 | ❌ 否 | ❌ 否 |
DELETE |
✔️ 是的 | ❌ 否 | ❌ 否 |
HEAD |
✔️ 是的 | ✔️ 是的 | ✔️ 是的 |
OPTIONS |
✔️ 是的 | ❌ 否 | ✔️ 是的 |
TRACE |
✔️ 是的 | ❌ 否 | ✔️ 是的 |
CONNECT |
❌ 否 | ❌ 否 | ❌ 否 |
†只有在
POST
適當的Cache-Control
或Expires
回應標頭存在時,才能快取方法。 這在實務上非常罕見。
HTTP 狀態碼
.NET 提供 HTTP 通訊協定的完整支援,這些通訊協定構成大部分的網際網路流量,以及 HttpClient 。 如需詳細資訊,請參閱 使用 HttpClient 類別提出 HTTP 要求。 應用程式藉由攔截 HttpRequestException 來接收 HTTP 通訊協定錯誤。 如果呼叫的方法未傳迴響應消息,則會在 中 HttpResponseMessageHttpResponseMessage.StatusCodeHttpRequestExceptionHttpRequestException.StatusCode 回報 HTTP 狀態碼或 中。 如需錯誤處理的詳細資訊,請參閱 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 |
重新導向狀態碼
重新導向狀態碼需要使用者代理程式採取動作,才能完成要求。 預設會開啟自動重新導向,可以使用 或 SocketsHttpHandler.AllowAutoRedirect 進行變更 HttpClientHandler.AllowAutoRedirect 。
用戶端錯誤狀態碼
用戶端錯誤狀態碼表示用戶端的要求無效。
伺服器錯誤狀態碼
伺服器錯誤狀態碼表示伺服器遇到無法滿足要求的非預期狀況。