ハイパーテキスト転送プロトコル (または HTTP) は、Web サーバーからリソースを要求するためのプロトコルです。 System.Net.Http.HttpClient クラスは、HTTP 要求を送信し、URI によって識別されるリソースから HTTP 応答を受信する機能を公開します。 Web 上では多くの種類のリソースが利用可能であり、HTTP では、これらのリソースにアクセスするための一連の要求メソッドが定義されています。
HTTP 要求メソッド
要求メソッドは、最初に 動詞 によって、また次の特性によって、いくつかの要因によって区別されます。
- 要求メソッドは、結果を変更せずに複数回正常に処理できる場合、 べき等 です。 詳細については、 RFC 9110: 9.2.2 を参照してください。べき等メソッド。
- 要求メソッドは、対応する応答を再利用のために格納できる場合に キャッシュ可能 です。 詳細については、 RFC 9110: セクション 9.2.3 を参照してください。メソッドとキャッシュ。
- リソースの状態が変更されない場合、要求 メソッドは安全なメソッド と見なされます。 すべての安全なメソッドもべき等ですが、すべてのべき等メソッドが安全であるとは見なされません。 詳細については、 RFC 9110: セクション 9.2.1 を参照してください。安全なメソッド。
HTTP メソッド | べき等 | キャッシュ可能 | 安全です |
---|---|---|---|
GET |
✔️ はい | ✔️ はい | ✔️ はい |
POST |
❌ いいえ | ⚠️ †Rarely | ❌ いいえ |
PUT |
✔️ はい | ❌ いいえ | ❌ いいえ |
PATCH |
❌ いいえ | ❌ いいえ | ❌ いいえ |
DELETE |
✔️ はい | ❌ いいえ | ❌ いいえ |
HEAD |
✔️ はい | ✔️ はい | ✔️ はい |
OPTIONS |
✔️ はい | ❌ いいえ | ✔️ はい |
TRACE |
✔️ はい | ❌ いいえ | ✔️ はい |
CONNECT |
❌ いいえ | ❌ いいえ | ❌ いいえ |
†
POST
メソッドは、適切なCache-Control
またはExpires
応答ヘッダーが存在する場合にのみキャッシュできます。 これは実際には非常に一般的ではありません。
HTTP 状態コード
.NET では、ほとんどのインターネット トラフィックに対応する HTTP プロトコルを HttpClientで包括的にサポートしています。 詳細については、「 HttpClient クラスを使用して HTTP 要求を行う」を参照してください。 アプリケーションは、 HttpRequestExceptionをキャッチすることによって HTTP プロトコル エラーを受け取ります。 HTTP 状態コードは、HttpResponseMessage.StatusCodeのHttpResponseMessageで報告されるか、呼び出されたメソッドが応答メッセージを返さない場合にHttpRequestException.StatusCodeでHttpRequestExceptionで報告されます。 エラー処理の詳細については、 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で変更できます。
HTTP 状態コード | HttpStatusCode |
---|---|
300 |
HttpStatusCode.MultipleChoices または HttpStatusCode.Ambiguous |
301 |
HttpStatusCode.MovedPermanently または HttpStatusCode.Moved |
302 |
HttpStatusCode.Found または HttpStatusCode.Redirect |
303 |
HttpStatusCode.SeeOther または HttpStatusCode.RedirectMethod |
304 |
HttpStatusCode.NotModified |
305 |
HttpStatusCode.UseProxy |
306 |
HttpStatusCode.Unused |
307 |
HttpStatusCode.TemporaryRedirect または HttpStatusCode.RedirectKeepVerb |
308 |
HttpStatusCode.PermanentRedirect |
クライアント エラーの状態コード
クライアントのエラー状態コードは、クライアントの要求が無効であることを示します。
サーバー エラーの状態コード
サーバーエラー状態コードは、サーバーが予期しない状態を検出し、要求を満たさないようにしたことを示します。
こちらも参照ください
.NET