Servlets - Codes d'état HTTP

Le format de la requête HTTP et des messages de réponse HTTP sont similaires et auront la structure suivante -

  • Une ligne d'état initial + CRLF (Retour chariot + Saut de ligne c'est-à-dire Nouvelle ligne)

  • Zéro ou plusieurs lignes d'en-tête + CRLF

  • Une ligne vide, c'est-à-dire un CRLF

  • Un corps de message facultatif comme un fichier, des données de requête ou une sortie de requête.

Par exemple, un en-tête de réponse de serveur se présente comme suit -

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
   (Blank Line)
<!doctype ...>
<html>
   <head>...</head>
   <body>
      ...
   </body>
</html>

La ligne d'état se compose de la version HTTP (HTTP / 1.1 dans l'exemple), d'un code d'état (200 dans l'exemple) et d'un message très court correspondant au code d'état (OK dans l'exemple).

Voici une liste des codes d'état HTTP et des messages associés qui peuvent être renvoyés par le serveur Web -

Code Message La description
100 Continuer Seule une partie de la demande a été reçue par le serveur, mais tant qu'elle n'a pas été rejetée, le client doit continuer avec la demande
101 Protocoles de commutation Le serveur change de protocole.
200 D'accord La demande est OK
201 Établi La demande est terminée et une nouvelle ressource est créée
202 Accepté La demande est acceptée pour le traitement, mais le traitement n'est pas terminé.
203 Informations ne faisant pas autorité  
204 Pas de contenu  
205 Réinitialiser le contenu  
206 Contenu partiel  
300 Choix multiples Une liste de liens. L'utilisateur peut sélectionner un lien et accéder à cet emplacement. Cinq adresses maximum
301 Déplacé définitivement La page demandée a été déplacée vers une nouvelle URL
302 A trouvé La page demandée a été déplacée temporairement vers une nouvelle URL
303 Voir autre La page demandée se trouve sous une autre URL
304 Non modifié  
305 Utiliser un proxy  
306 Inutilisé Ce code était utilisé dans une version précédente. Il n'est plus utilisé, mais le code est réservé
307 Redirection temporaire La page demandée a été déplacée temporairement vers une nouvelle URL.
400 Mauvaise Demande Le serveur n'a pas compris la demande
401 Non autorisé La page demandée a besoin d'un nom d'utilisateur et d'un mot de passe
402 Paiement Requis Vous ne pouvez pas encore utiliser ce code
403 Interdit L'accès à la page demandée est interdit
404 Pas trouvé Le serveur ne trouve pas la page demandée.
405 Méthode Non Autorisée La méthode spécifiée dans la demande n'est pas autorisée.
406 Pas acceptable Le serveur peut uniquement générer une réponse qui n'est pas acceptée par le client.
407 Authentification proxy requise Vous devez vous authentifier auprès d'un serveur proxy avant que cette demande puisse être servie.
408 Délai d'expiration de la demande La demande a pris plus de temps que le serveur était prêt à attendre.
409 Conflit La demande n'a pas pu être traitée en raison d'un conflit.
410 Disparu La page demandée n'est plus disponible.
411 Longueur requise Le "Content-Length" n'est pas défini. Le serveur n'acceptera pas la demande sans elle.
412 La condition préalable a échoué La condition préalable donnée dans la requête évaluée à false par le serveur.
413 Demande d'entité trop grande Le serveur n'acceptera pas la demande, car l'entité de demande est trop grande.
414 Request-url trop long Le serveur n'acceptera pas la demande, car l'URL est trop longue. Se produit lorsque vous convertissez une demande «post» en une demande «get» avec des informations de requête longues.
415 Type de support non pris en charge Le serveur n'acceptera pas la demande, car le type de média n'est pas pris en charge.
417 L'attente a échoué  
500 Erreur Interne du Serveur La demande n'a pas été complétée. Le serveur a rencontré une condition inattendue.
501 Pas mis en œuvre La demande n'a pas été complétée. Le serveur ne prenait pas en charge la fonctionnalité requise.
502 Mauvaise passerelle La demande n'a pas été complétée. Le serveur a reçu une réponse non valide du serveur en amont.
503 Service indisponible La demande n'a pas été complétée. Le serveur est temporairement en surcharge ou en panne.
504 Délai d'expiration de la passerelle La passerelle a expiré.
505 Version HTTP non prise en charge Le serveur ne prend pas en charge la version "protocole http".

Méthodes pour définir le code d'état HTTP

Les méthodes suivantes peuvent être utilisées pour définir le code d'état HTTP dans votre programme de servlet. Ces méthodes sont disponibles avec l' objet HttpServletResponse .

Sr.No. Méthode et description
1

public void setStatus ( int statusCode )

Cette méthode définit un code d'état arbitraire. La méthode setStatus prend un int (le code d'état) comme argument. Si votre réponse comprend un code d'état spécial et un document, veillez à appeler setStatus avant de renvoyer réellement tout le contenu avec PrintWriter .

2

public void sendRedirect(String url)

Cette méthode génère une réponse 302 avec un en- tête Location donnant l'URL du nouveau document

3

public void sendError(int code, String message)

Cette méthode envoie un code d'état (généralement 404) avec un court message qui est automatiquement mis en forme dans un document HTML et envoyé au client.

Exemple de code d'état HTTP

Voici l'exemple qui enverrait un code d'erreur 407 au navigateur client et le navigateur vous montrerait "Besoin d'authentification !!!" message.

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// Extend HttpServlet class
public class showError extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set error code and reason.
      response.sendError(407, "Need authentication!!!" );
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      doGet(request, response);
   }
}

Maintenant, appeler le servlet ci-dessus afficherait le résultat suivant -

HTTP Status 407 - Need authentication!!!

type Status report

messageNeed authentication!!!

descriptionThe client must first authenticate itself with the proxy (Need authentication!!!).

Apache Tomcat/5.5.29