sendRediret con post

mariagarcia
21 de Diciembre del 2004
Necesito desde un servlet llamar a una URL (externa, que no puedo modificar) con el método post.

Uso sendRedirect, y todo va bien pero el método que usa por defecto es get.

¿álguna idea sobre lo que puedo hacer?

Kenneth
21 de Diciembre del 2004
yo te recomiendo que uses un RequestDispatcher.

La diferencia entre response.sendRedirect() y request.getRequestDispatcher es que de la segunda manera aún conservas las variables y datos de request.

Si redirigimos la petición (con sendRedirect) realmente le estamos diciendo al servlet que comunique al navegador que debe pedir otra dirección. El navegador obedece y la pide, pero claro, con otra petición distinta. La única manera de pasar parámetros en con GET, componiendo una URL del tipo pagina.jsp?var=valor&var2=valor2...

Con RequestDispatcher es el propio Servlet el que delega en alguien la petición original que le llegó, y que devuelve el resultado de la misma. De este modo, los parámetros originales en la petición HTTP SE CONSERVAN.

Si había parámetros POST, los seguirá habiendo.

Para despachar de esta manera:

request.getRequestDispatcher("URL_SERVLET_DESTINO").forward(request, response);

Vemos que al método forward del RequestDispatcher le pasamos las instancias de los request y response para que, precisamente, conserve cualquier parámetro que tuviese.

Espero que te sirva. Mírate la API de los HttpServlet.

Salu2

Ken