Поддержка HTTP в .NET
Протокол гипертекстовой передачи (или HTTP) — это протокол для запроса ресурсов с веб-сервера. Класс System.Net.Http.HttpClient предоставляет возможность отправлять HTTP-запросы и получать HTTP-ответы от ресурса, определяемого URI. Многие типы ресурсов доступны в Интернете, и 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помощью протокола . Дополнительные сведения см. в статье "Создание HTTP-запросов с помощью класса HttpClient". Приложения получают ошибки протокола HTTP путем перехвата HttpRequestException. Коды состояния HTTP передаются с HttpResponseMessageHttpResponseMessage.StatusCode помощью или в HttpRequestExceptionHttpRequestException.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.
Код состояния 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 |
Коды состояния ошибок клиента
Коды состояния ошибки клиента указывают, что запрос клиента недопустим.
Коды состояния ошибки сервера
Коды состояния ошибки сервера указывают на то, что сервер столкнулся с непредвиденным состоянием, которое не позволило выполнить запрос.