es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo capturar respuestas de HttpProxy

Pregunta

Tengo un servidor proxy inverso utilizando Vert.x Web Proxy, implementado con un código bastante estándar:

  ...

  HttpClient client = theVertx.createHttpClient();
  HttpProxy proxy = HttpProxy.reverseProxy(client);

  Route anyroute = theRouter.route("/*");
  anyroute.handler(ProxyHandler.create(proxy));     
  anyroute.failureHandler(hnd->{
     System.out.println("Falló. Código de retorno: "+hnd.response().getStatusCode());
  });

  ...

Este código funciona lo suficientemente bien, pero me gustaría ser capaz de capturar los códigos de retorno para realizar algunas acciones personalizadas (como mostrar páginas web personalizadas cuando ocurran fallos 400). Estoy viendo que el código en el método failureHandler() no es llamado cuando yo causo un error 404 para que ocurra. Aparentemente, lo que sucede es que si hago una solicitud para un recurso que no existe en el servidor de destino, el proxy en realidad devuelve el error 404 enviado por el servidor de destino de vuelta al navegador!

Me gustaría capturar ese error 404 cuando el proxy lo recibe y hacer algo con él. Desafortunadamente, no está claro en la documentación del proxy web (ni en ninguno de los ejemplos de código bastante pocos que he visto en la web) que el proxy web sea capaz de hacer esto.

¿Es posible escribir un controlador que pueda capturar la respuesta que viene de un HttpProxy? Si es así, ¿cómo lo haría?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible escribir un controlador que pueda capturar la respuesta que proviene de un HttpProxy. Para hacer esto, se puede utilizar el método proxy.requestHandler(). Este método toma un Handler como argumento, lo que le permite acceder a la respuesta del proxy. Luego se puede utilizar el método response.statusCode() para obtener el código de estado de la respuesta y realizar acciones personalizadas en función del código.

Comments are closed.