Os formatos de solicitações HTTP e respostas HTTP são semelhantes e ambos possuem a seguinte estrutura:
Comece com linha de status + CRLF (retorno de carro e avanço de linha)
Módulo de cabeçalho de linha zero ou múltipla + CRLF
Uma linha em branco, como CRLF
Corpo da mensagem opcional, como arquivo, dados de consulta, saída de consulta
Por exemplo, um cabeçalho de resposta do servidor se parece com isto:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (Linha em branco)<!doctype ...><html><head>...</head><body> ... </body></html>
A linha de status contém a versão HTTP, um código de status e a mensagem curta correspondente ao código de status.
A tabela a seguir lista os códigos de status HTTP e as mensagens associadas a eles que podem ser retornadas do servidor:
código de status | Informação | descrever |
---|---|---|
100 | Continuar | Apenas parte da solicitação é recebida pelo servidor, mas enquanto não for rejeitada pelo servidor, o cliente continuará a solicitação. |
101 | Protocolos de comutação | protocolo de comutação de servidor |
200 | OK | Solicitação confirmada |
201 | Criado | A solicitação é concluída e o novo recurso é criado |
202 | Aceito | A solicitação foi aceita, mas não processada |
203 | Informações não oficiais | |
204 | Sem conteúdo | |
205 | Redefinir conteúdo | |
206 | Conteúdo Parcial | |
300 | Múltiplas escolhas | Uma tabela de hiperlink Os usuários podem selecionar um hiperlink e acessá-lo. São suportados no máximo 5 hiperlinks. |
301 | Movido permanentemente | A página solicitada foi movida para um novo URL |
302 | Encontrado | A página solicitada foi movida temporariamente para um novo URL |
303 | Veja outro | A página solicitada pode ser encontrada em um URL diferente |
304 | Não modificado | |
305 | Usar proxy | |
306 | Não utilizado | Este código de status não é mais usado, mas o código de status é mantido |
307 | Redirecionamento temporário | A página solicitada foi movida temporariamente para um novo URL |
400 | Pedido ruim | O servidor não reconhece a solicitação |
401 | Não autorizado | A página solicitada requer um nome de usuário e senha |
402 | Pagamento obrigatório | Este código de status ainda não pode ser usado |
403 | Proibido | O acesso à página solicitada é proibido |
404 | Não encontrado | O servidor não consegue encontrar a página solicitada |
405 | Método não permitido | O método especificado na solicitação não é permitido |
406 | Não aceitável | O servidor só pode criar uma resposta inaceitável para o cliente |
407 | Autenticação de proxy necessária | Um servidor proxy deve ser autenticado antes que as solicitações possam ser atendidas |
408 | Solicitar tempo limite | O tempo de solicitação excedeu o tempo que o servidor poderia esperar e a conexão foi desconectada. |
409 | Conflito | Há um conflito na solicitação |
410 | Perdido | A página solicitada não está mais disponível |
411 | Comprimento necessário | "Content-Length" não está definido, o servidor recusou-se a aceitar a solicitação |
412 | Falha na pré-condição | A pré-condição solicitada foi avaliada pelo servidor como falsa |
413 | Solicitar entidade muito grande | O servidor recusou-se a aceitar a solicitação porque a entidade solicitada era muito grande. |
414 | URL de solicitação muito longo | O servidor recusou-se a aceitar a solicitação porque o URL era muito longo. Muitas vezes aparece uma grande quantidade de informações de consulta ao converter uma solicitação "POST" em uma solicitação "GET". |
415 | Tipo de mídia não compatível | O servidor recusou-se a aceitar a solicitação porque o tipo de mídia não é compatível |
417 | Expectativa falhou | |
500 | Erro do Servidor Interno | A solicitação estava incompleta e o servidor encontrou uma condição inesperada. |
501 | Não implementado | A solicitação está incompleta e o servidor não fornece a funcionalidade necessária |
502 | Gateway ruim | A solicitação estava incompleta e o servidor recebeu uma resposta inválida do servidor upstream. |
503 | Serviço não disponível | A solicitação está incompleta e o servidor foi reiniciado ou encerrado temporariamente. |
504 | Tempo limite do gateway | Tempo limite do gateway |
505 | Versão HTTP não suportada | O servidor não suporta a versão HTTP especificada |
A tabela a seguir lista os métodos usados para definir códigos de status na classe HttpServletResponse:
SN | Método e Descrição |
---|---|
1 | public void setStatus (int statusCode) Este método pode definir qualquer código de status. Se sua resposta contiver um código de status especial e um documento, chame o método setStatus antes de retornar qualquer coisa com o PrintWriter |
2 | public void sendRedirect(String url) Este método gera uma resposta 302 e um cabeçalho Location para informar ao URL um novo documento. |
3 | public void sendError(int code, String message) Este método insere automaticamente um código de status (geralmente 404) e uma mensagem curta no documento HTML e o envia de volta ao cliente. |
O exemplo a seguir enviará um código de erro 407 ao navegador, e o navegador informará "Precisa de autenticação!!!".
<html><head><title>Configurando o código de status HTTP</title></head><body><% // Defina o código de erro e explique o motivo response.sendError(407, "Precisa de autenticação!!!" ) ;%></corpo></html>
Visitando a página JSP acima, você obterá os seguintes resultados:
Você também pode tentar usar outros códigos de status para ver se obtém algum resultado inesperado.