Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Protocolo de Transferência de Hipertexto (ou HTTP) é um protocolo para solicitar recursos de um servidor Web. A classe System.Net.Http.HttpClient expõe a capacidade de enviar solicitações HTTP e receber respostas HTTP de um recurso identificado por um URI. Muitos tipos de recursos estão disponíveis na Web e o HTTP define um conjunto de métodos de solicitação para acessar esses recursos.
Métodos de solicitação HTTP
Os métodos de solicitação são diferenciados por meio de vários fatores, primeiro pelo verbo, mas também pelas seguintes características:
- Um método de solicitação é idempotente se ele puder ser processado várias vezes sem alterar o resultado. Para obter mais informações, consulte RFC 9110: 9.2.2. Métodos Idempotentes.
- Um método de solicitação é em cache quando sua resposta correspondente pode ser armazenada para reutilização. Para obter mais informações, consulte RFC 9110: Seção 9.2.3. Métodos e cache.
- Um método de solicitação é considerado um método seguro se ele não modificar o estado de um recurso. Todos os métodos seguros também são idempotentes, mas nem todos os métodos idempotentes são considerados seguros. Para obter mais informações, consulte RFC 9110: Seção 9.2.1. Métodos seguros.
Método HTTP | É idempotente | Pode ser armazenado em cache | É seguro |
---|---|---|---|
GET |
✔️ Sim | ✔️ Sim | ✔️ Sim |
POST |
❌ Não | ⚠️ †Raramente | ❌ Não |
PUT |
✔️ Sim | ❌ Não | ❌ Não |
PATCH |
❌ Não | ❌ Não | ❌ Não |
DELETE |
✔️ Sim | ❌ Não | ❌ Não |
HEAD |
✔️ Sim | ✔️ Sim | ✔️ Sim |
OPTIONS |
✔️ Sim | ❌ Não | ✔️ Sim |
TRACE |
✔️ Sim | ❌ Não | ✔️ Sim |
CONNECT |
❌ Não | ❌ Não | ❌ Não |
†O método
POST
só pode ser armazenado em cache quando os cabeçalhos de respostaCache-Control
ouExpires
apropriados estiverem presentes. Isso é muito incomum na prática.
Códigos de status HTTP
O .NET fornece suporte abrangente para o protocolo HTTP, que é responsável pela maior parte do tráfego da Internet, com o HttpClient. Para obter mais informações, consulte Fazer solicitações HTTP com a classe HttpClient. Aplicativos recebem erros de protocolo HTTP capturando um HttpRequestException. Códigos de status HTTP são relatados em HttpResponseMessage com o HttpResponseMessage.StatusCode ou em HttpRequestException com o HttpRequestException.StatusCode caso o método chamado não retorne uma mensagem de resposta. Para mais informações sobre o tratamento de erros, consulte de tratamento de erros HTTP, e para mais informações sobre códigos de status, consulte RFC 9110, Semântica HTTP: Códigos de status.
Códigos de status informativos
Os códigos de status informativos refletem uma resposta provisória. A maioria das respostas provisórias, por exemplo, HttpStatusCode.Continue, são tratadas internamente com HttpClient e nunca são exibidas ao usuário.
Código de status HTTP | HttpStatusCode |
---|---|
100 |
HttpStatusCode.Continue |
101 |
HttpStatusCode.SwitchingProtocols |
102 |
HttpStatusCode.Processing |
103 |
HttpStatusCode.EarlyHints |
Códigos de status bem-sucedidos
Os códigos de status bem-sucedidos indicam que a solicitação do cliente foi recebida, compreendida e aceita com êxito.
Código de status 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 status de redirecionamento
Códigos de status de redirecionamento exigem que o agente do usuário tome medidas para atender à solicitação. O redirecionamento automático é ativado por padrão, pode ser alterado com HttpClientHandler.AllowAutoRedirect ou SocketsHttpHandler.AllowAutoRedirect.
Código de status HTTP | HttpStatusCode |
---|---|
300 |
HttpStatusCode.MultipleChoices ou HttpStatusCode.Ambiguous |
301 |
HttpStatusCode.MovedPermanently ou HttpStatusCode.Moved |
302 |
HttpStatusCode.Found ou HttpStatusCode.Redirect |
303 |
HttpStatusCode.SeeOther ou HttpStatusCode.RedirectMethod |
304 |
HttpStatusCode.NotModified |
305 |
HttpStatusCode.UseProxy |
306 |
HttpStatusCode.Unused |
307 |
HttpStatusCode.TemporaryRedirect ou HttpStatusCode.RedirectKeepVerb |
308 |
HttpStatusCode.PermanentRedirect |
Códigos de status de erro do cliente
Os códigos de status de erro do cliente indicam que a solicitação do cliente era inválida.
Códigos de status de erro do servidor
Os códigos de status de erro do servidor indicam que o servidor encontrou uma condição inesperada que o impediu de atender à solicitação.
Código de status 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 |