Compatibilidad con HTTP en .NET

El Protocolo de transferencia de hipertexto (o HTTP) es un protocolo para solicitar recursos de un servidor web. La clase System.Net.Http.HttpClient expone la posibilidad de enviar solicitudes HTTP y recibir respuestas HTTP de un recurso identificado por un URI. Hay muchos tipos de recursos disponibles en la Web y HTTP define un conjunto de métodos de solicitud para acceder a estos recursos.

Métodos de solicitud HTTP

Los métodos de solicitud se diferencian por varios factores, primero por su verbo, pero también por las siguientes características:

HTTP method Es idempotente Se puede almacenar en caché Es seguro
GET ✔️ Sí ✔️ Sí ✔️ Sí
POST ❌ No Casi nunca ❌ No
PUT ✔️ Sí ❌ No ❌ No
PATCH ❌ No ❌ No ❌ No
DELETE ✔️ Sí ❌ No ❌ No
HEAD ✔️ Sí ✔️ Sí ✔️ Sí
OPTIONS ✔️ Sí ❌ No ✔️ Sí
TRACE ✔️ Sí ❌ No ✔️ Sí
CONNECT ❌ No ❌ No ❌ No

El método POST solo se puede almacenar en caché cuando están presentes los encabezados de respuesta Cache-Control o Expires adecuados. Esto es muy poco común en la práctica.

Códigos de estado HTTP

.NET proporciona compatibilidad completa con el protocolo HTTP, lo que tiene en cuenta la mayoría del tráfico de Internet, con HttpClient. Para más información, consulte Realización de solicitudes HTTP con la clase HttpClient. Las aplicaciones reciben errores de protocolo HTTP al capturar una excepción HttpRequestException. Los códigos de estado HTTP se notifican en HttpResponseMessage con HttpResponseMessage.StatusCode o en HttpRequestException con HttpRequestException.StatusCode en caso de que el método llamado no devuelva un mensaje de respuesta. Para más información sobre el control de errores, consulte Control de errores HTTP; y, para más información sobre los códigos de estado, consulte RFC 9110, Semántica HTTP: Códigos de estado.

Códigos de estado informativos

Los códigos de estado informativos reflejan una respuesta provisional. La mayoría de las respuestas provisionales, por ejemplo HttpStatusCode.Continue, se administran internamente con HttpClient y nunca se exponen al usuario.

Código de estado HTTP HttpStatusCode
100 HttpStatusCode.Continue
101 HttpStatusCode.SwitchingProtocols
102 HttpStatusCode.Processing
103 HttpStatusCode.EarlyHints

Códigos de estado correctos

Los códigos de estado correctos indican que la solicitud del cliente se recibió correctamente, y que se entendió y aceptó.

Código de estado 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

Códigos de estado de redireccionamiento

Los códigos de estado de redireccionamiento requieren que el agente de usuario tome medidas para satisfacer la solicitud. El redireccionamiento automático está activado de forma predeterminada, pero se puede cambiar con HttpClientHandler.AllowAutoRedirect o SocketsHttpHandler.AllowAutoRedirect.

Código de estado HTTP HttpStatusCode
300 HttpStatusCode.MultipleChoices o HttpStatusCode.Ambiguous
301 HttpStatusCode.MovedPermanently o HttpStatusCode.Moved
302 HttpStatusCode.Found o HttpStatusCode.Redirect
303 HttpStatusCode.SeeOther o HttpStatusCode.RedirectMethod
304 HttpStatusCode.NotModified
305 HttpStatusCode.UseProxy
306 HttpStatusCode.Unused
307 HttpStatusCode.TemporaryRedirect o HttpStatusCode.RedirectKeepVerb
308 HttpStatusCode.PermanentRedirect

Códigos de estado de error HTTP

Los códigos de estado de error del cliente indican que la solicitud del cliente no era válida.

Código de estado HTTP HttpStatusCode
400 HttpStatusCode.BadRequest
401 HttpStatusCode.Unauthorized
402 HttpStatusCode.PaymentRequired
403 HttpStatusCode.Forbidden
404 HttpStatusCode.NotFound
405 HttpStatusCode.MethodNotAllowed
406 HttpStatusCode.NotAcceptable
407 HttpStatusCode.ProxyAuthenticationRequired
408 HttpStatusCode.RequestTimeout
409 HttpStatusCode.Conflict
410 HttpStatusCode.Gone
411 HttpStatusCode.LengthRequired
412 HttpStatusCode.PreconditionFailed
413 HttpStatusCode.RequestEntityTooLarge
414 HttpStatusCode.RequestUriTooLong
415 HttpStatusCode.UnsupportedMediaType
416 HttpStatusCode.RequestedRangeNotSatisfiable
417 HttpStatusCode.ExpectationFailed
418 Soy una tetera 🫖
421 HttpStatusCode.MisdirectedRequest
422 HttpStatusCode.UnprocessableEntity
423 HttpStatusCode.Locked
424 HttpStatusCode.FailedDependency
426 HttpStatusCode.UpgradeRequired
428 HttpStatusCode.PreconditionRequired
429 HttpStatusCode.TooManyRequests
431 HttpStatusCode.RequestHeaderFieldsTooLarge
451 HttpStatusCode.UnavailableForLegalReasons

Códigos de estado de error del servidor

Los códigos de estado de error del servidor indican que el servidor encontró una condición inesperada que impedía que se completara la solicitud.

Código de estado HTTP HttpStatusCode
500 HttpStatusCode.InternalServerError
501 HttpStatusCode.NotImplemented
502 HttpStatusCode.BadGateway
503 HttpStatusCode.ServiceUnavailable
504 HttpStatusCode.GatewayTimeout
505 HttpStatusCode.HttpVersionNotSupported
506 HttpStatusCode.VariantAlsoNegotiates
507 HttpStatusCode.InsufficientStorage
508 HttpStatusCode.LoopDetected
510 HttpStatusCode.NotExtended
511 HttpStatusCode.NetworkAuthenticationRequired

Vea también