Servlet: códigos de estado HTTP

Para cada solicitud HTTP y respuesta HTTP, tenemos mensajes. El formato de la solicitud HTTP y los mensajes de respuesta HTTP son similares y tendrán la siguiente estructura:

  • Una línea de estado inicial + CRLF
  • CRLF = (retorno de carro + avance de línea, es decir, nueva línea)
  • Cero o más líneas de encabezado + CRLF
  • Una línea en blanco, es decir, un CRLF
  • Un cuerpo de mensaje opcional como archivo, datos de consulta o salida de consulta.

Por ejemplo, un encabezado de respuesta del servidor parece:

HTML

HTTP/5.0 200 OK
Content-Type: text/html
Headers:
   (Blank Line)
<!doctype HTML>
<html>
   <head></head>
   <body>
   </body>
</html>

La línea de estado consta de la versión HTTP (HTTP/5 en el ejemplo), un código de estado (200 en el ejemplo) y un mensaje muy breve correspondiente al código de estado (OK en el ejemplo). Aquí hay una lista de códigos de estado HTTP y mensajes asociados que pueden devolverse desde el servidor web:

Código de estado       

Mensaje

Descripción

100 Continuar Solo una parte de la solicitud ha sido recibida por el servidor, pero mientras no haya sido rechazada, el cliente debe continuar con la solicitud
101        Protocolos de conmutación El servidor cambia de protocolo.
200 OK La solicitud está bien
201 Creado La solicitud está completa y se crea un nuevo recurso.
202 Aceptado La solicitud se acepta para su procesamiento, pero el procesamiento no está completo.
203 Información no autorizada    
204 Sin contenido  
205 Restablecer contenido  
206 contenido parcial  
300 Múltiples opciones Una lista de enlaces. El usuario puede seleccionar un enlace e ir a esa ubicación. Máximo cinco direcciones
301 Movido permanentemente La página solicitada se ha movido a una nueva URL
302 Fundar La página solicitada se ha movido temporalmente a una nueva URL
303 Ver otros La página solicitada se puede encontrar en una URL diferente
304 No modificado    
305 Usa proxy    
306 No usado Este código se usó en una versión anterior. Ya no se usa, pero el código está reservado.
307 Redirección temporal La página solicitada se ha movido temporalmente a una nueva URL
400 Solicitud incorrecta El servidor no entendió la solicitud.
401 No autorizado La página solicitada necesita un nombre de usuario y una contraseña.
402 Pago requerido No puedes usar este código todavía
403 Prohibido Prohibido el acceso a la página solicitada
404 Extraviado El servidor no puede encontrar la página solicitada.
405 Método no encontrado El método especificado en la solicitud no está permitido.
406 Inaceptable El servidor solo puede generar una respuesta que no es aceptada por el cliente.
407 Se requiere autenticación proxy  Debe autenticarse con un servidor proxy antes de que se pueda atender esta solicitud.
408 Pide tiempo fuera  La solicitud tardó más de lo que el servidor estaba preparado para esperar.
409 Conflicto  No se pudo completar la solicitud debido a un conflicto.
410 Desaparecido  La página solicitada ya no está disponible.
411 Longitud requerida  La «longitud del contenido» no está definida. El servidor no aceptará la solicitud sin ella.
412 Condición previa Falló  El servidor evaluó la condición previa proporcionada en la solicitud como falsa.
413 Entidad de solicitud demasiado grande  El servidor no aceptará la solicitud porque la entidad de solicitud es demasiado grande.
414 URL de solicitud demasiado larga  El servidor no aceptará la solicitud porque la URL es demasiado larga. Ocurre cuando convierte una solicitud de «publicación» en una solicitud de «obtención» con información de consulta larga.
415 Tipo de medio no compatible  El servidor no aceptará la solicitud porque el tipo de medio no es compatible.
417  Expectativa fallida   
500 error de servidor interno  La solicitud no se completó. El servidor cumplió una condición inesperada.
501 No se ha implementado  La solicitud no se completó. El servidor no admitía la funcionalidad requerida.
502 Mala puerta de enlace  La solicitud no se completó. El servidor recibió una respuesta no válida del servidor ascendente.
503 Servicio no disponible  La solicitud no se completó. El servidor se está sobrecargando temporalmente o está inactivo.
504 Tiempo de espera de puerta de enlace  Se ha agotado el tiempo de espera de la puerta de enlace.
505 Versión HTTP no compatible  El servidor no es compatible con la versión de «protocolo http».

Métodos para establecer el código de estado HTTP

Los métodos a continuación se pueden usar para configurar el código de estado HTTP en su programa de servlet. Estos métodos están disponibles con el objeto HttpServletResponse.

S. No.

Método y descripción

1

public void setStatus ( int statusCode )

Este método establece un código de estado arbitrario. El método setStatus toma un int (el código de estado) como argumento. Si su respuesta incluye un código de estado especial y un documento, asegúrese de llamar a setStatus antes de devolver el contenido con PrintWriter.

2

public void sendRedirect(String url)

Este método genera una respuesta 302 junto con un encabezado de ubicación que proporciona la URL del nuevo documento.

3

public void sendError (código int, mensaje de string)

Este método envía un código de estado (generalmente 404) junto con un mensaje corto que se formatea automáticamente dentro de un documento HTML y se envía al cliente.

Ejemplo de código de estado HTTP

El siguiente código es el ejemplo que enviaría un código de error 407 al navegador del cliente y el navegador le mostraría el mensaje «¡¡¡No encontrado!!!» mensaje.

Java

// 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(404, "Not Found!!!" );
   }
     
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
        
      doGet(request, response);
   }
}

Ahora, llamar al servlet anterior mostraría el siguiente resultado:

Publicación traducida automáticamente

Artículo escrito por vjguru40 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *