Pregunta

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    URL url = new URL("http://localhost:8080/testy/Out");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setRequestMethod("POST");    
    PrintWriter out = response.getWriter();
    for(Enumeration e = request.getHeaderNames(); e.hasMoreElements();) {
        Object o = e.nextElement();
        String value = request.getHeader(o.toString());
        out.println(o + "--is--" + value + "<br>");
        connection.setRequestProperty((String) o, value);
    }
    connection.connect();
}

Escribí el código anterior en un servlet para publicar un formulario, así que algunas ubicaciones alternativas que este servlet, pero no está funcionando. Está bien usar la conexión.

¿Fue útil?

Solución

Creo que estás buscando

RequestDispatcher rd;
rd = getServletContext().getRequestDispatcher("pathToServlet");
rd.forward(request, response);

Otros consejos

URLConnection se ejecuta perezosamente. Es decir, no lo hará Realmente Dispare la solicitud HTTP hasta que obtenga información sobre la respuesta HTTP. P.ej

int responseCode = httpUrlConnection.getResponseCode();

o

InputStream responseBody = urlConnection.getInputStream();

o

String statusHeader = urlConnection.getHeaderField(null);

los connection.connect(); es por cierto completamente superfluo. Ya está ejecutado en el momento en que llamaste url.openConnection();. También el connection.setRequestMethod("POST"); es completamente superfloso, el connection.setDoOutput(true) ya hace eso.

Dicho esto, si el objetivo se encuentra realmente en el mismo contexto de la aplicación web alojado en la misma máquina, entonces hay mucho Mejores formas de invocarlo que crear una conexión HTTP con él, como reenviar o redirigir la solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top