English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Codes d'état HTTP Servlet

La structure des messages de demande HTTP et de réponse HTTP est similaire, et ressemble à ceci :

  • Ligne d'état initiale + Retour chariot et retour à la ligne (retour+retour à la ligne)

  • Zéro ou plusieurs lignes d'en-tête+Retour chariot et retour à la ligne

  • Une ligne blanche, c'est-à-dire un retour chariot et un retour à la ligne.

  • Un corps de message optionnel, par exemple un fichier, des données de requête ou une sortie de requête.

Par exemple, l'entête de réponse du serveur peut être comme suit :

HTTP/1.1 200 OK
Contenu-Type: .../html
En-tête2: ...
...
En-têteN: ...
  (Ligne blanche)
<!doctype ...>
<html>
<head>.../head>
<body>
...
</body>
</html>

La ligne d'état contient la version HTTP (dans cet exemple, HTTP/1.1)、un code d'état (dans cet exemple, 200)et un message court correspondant au code d'état (dans cet exemple, OK).

Voici une liste des codes d'état HTTP possibles renvoyés par un serveur Web et des informations associées :

CodeMessageDescription
100ContinuerSeulement une partie de la demande a été reçue par le serveur, mais tant que la demande n'est pas refusée, le client doit continuer cette demande.
101Switching ProtocolsLe serveur bascule le protocole.
200OKLa demande a réussi.
201CrééLa demande est complète et crée une nouvelle ressource.
202AcceptéLa requête a été acceptée et traitée, mais le traitement n'est pas complet.
203Non-Information autoritaire 
204Pas de contenu 
205Contenu réinitialisé 
206Contenu partiel 
300Choix multiplesListe de liens. L'utilisateur peut choisir un lien pour accéder à cet endroit. Jusqu'à cinq adresses.
301Déplacé de manière permanenteLa page demandée a été déplacée vers une nouvelle URL.
302TrouvéLa page demandée a été temporairement déplacée vers une nouvelle URL.
303Voir autreLa page demandée peut être trouvée sous une autre URL différente.
304Non modifié 
305Utilisez un proxy 
306InutiliséUtilisez ce code dans les versions précédentes. Il n'est plus utilisé, mais le code est conservé.
307Redirection temporaireLa page demandée a été temporairement déplacée vers une nouvelle URL.
400Mauvaise requêteLe serveur ne comprend pas la requête.
401Non autoriséLa page demandée nécessite un nom d'utilisateur et un mot de passe.
402Paiement requisVous ne pouvez pas encore utiliser ce code.
403InterditAccès à la page demandée interdit.
404Page introuvableLe serveur ne peut pas trouver la page demandée.
405Méthode non autoriséeLa méthode spécifiée dans la requête n'est pas autorisée.
406Non acceptableLe serveur ne génère qu'une réponse qui n'est pas acceptée par le client.
407Authentification proxy requiseVous devez utiliser l'authentification du serveur proxy avant que la requête soit livrée.
408Délai de la requête expiréLa durée demandée pour la requête est supérieure à la durée que le serveur peut attendre, dépassement du délai.
409ConflitLa requête n'a pas pu être achevée en raison de conflits.
410Partie manquanteLa page demandée n'est plus disponible.
411Longueur requise"Contenu"-"Longueur" non définie. Le serveur ne peut pas traiter la requête du client sans contenu.-Informations de longueur demandées
412Échec des conditions préalablesLes conditions préalables indiquées dans la requête sont évaluées par le serveur comme fausses.
413Entité de la requête trop grandeLe serveur n'accepte pas la requête car l'entité de la requête est trop grande.
414Requête-URL trop longueLe serveur n'accepte pas la requête car l'URL est trop longue. Cela se produit lorsque vous transformez une requête "post" en une requête "get" avec des informations de recherche longues.
415Type de média non pris en chargeLe serveur ne peut pas accepter cette requête car le type de média n'est pas supporté.
417Expectation Failed 
500Internal Server ErrorRequête incomplète. Le serveur a rencontré une situation imprévue.
501Not ImplementedRequête incomplète. Le serveur ne supporte pas la fonction requise.
502Bad GatewayRequête incomplète. Le serveur a reçu une réponse invalide du serveur上游.
503Service UnavailableRequête incomplète. Le serveur est temporairement surchargé ou est en panne.
504Gateway TimeoutTimeout Gateway
505HTTP Version Not SupportedLe serveur ne supporte pas la version "HTTP protocol".

Méthodes de définition des codes d'état HTTP

Les méthodes suivantes peuvent être utilisées pour définir les codes d'état HTTP dans des programmes Servlet. Ces méthodes passent HttpServletResponse Objet disponible.

NuméroMéthode & Description
1public void setStatus ( int statusCode )
Cette méthode définit un code d'état arbitraire. La méthode setStatus accepte un int (code d'état) en paramètre. Si votre réponse contient un code d'état spécial et un document, assurez-vous d'utiliser PrintWriter appeler setStatus avant de renvoyer tout contenu réel.
2public void sendRedirect(String url)
Cette méthode génère un 302 réponse, accompagnée d'une URL de document nouveau Location en-tête.
3public void sendError(int code, String message)
Cette méthode envoie un code d'état (généralement 404),ainsi qu'un message court formaté automatiquement et envoyé au client dans le document HTML.

Exemples de codes HTTP d'état

L'exemple suivant montre 407 Le code d'erreur est envoyé au navigateur client, qui affiche le message "Need authentication!!!".

// Importation des bibliothèques java nécessaires
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/showError)
// Extension de la classe HttpServlet
public class showError extends HttpServlet {
 
  // Méthode pour traiter les requêtes de méthode GET
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            lève ServletException, IOException
  {
      // Définir le code d'erreur et la raison
      response.sendError(407, "Nécessite l'authentification!!!" );
  }
  // Méthode pour traiter les requêtes de méthode POST
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      lève ServletException, IOException {
     doGet(request, response);
  }
}

Maintenant, appeler le Servlet ci-dessus affichera le résultat suivant :

Statut HTTP 407 - Nécessite l'authentification!!!

type Rapport de statut

message Nécessite l'authentification!!!

description Le client doit d'abord s'authentifier avec le proxy (Nécessite l'authentification!!!).

Apache Tomcat/5.5.29