Forward para url externas mantendo o request

0 respostas
B

Boa noite.

Estou tentando fazer um modo de logar consultas que são feitas em outros sistemas fora do meu, mas provenientes do meu.

Colocar os dados no form html com o action para a URI do sistema funciona para acessar o sistema, mas não consigo ter controle da saída para logá-la já que a requisição vai direto para fora.

Uma solução que encontrei foi mandar para dentro do meu sistema, e passar a URI alvo por parâmetro.

Como conecto com vários sistemas, fiz um método genérico para redirecionar isso, mantendo os parâmetros(não otimizei nem tratei todos os casos):

private void redirect()
   {
      Map map = request.getParameterMap();

      StringBuffer location = new StringBuffer(request.getParameter("uri")); // uri não é nulo
      location.append("?");

      for (Iterator it = map.keySet().iterator(); it.hasNext();)
      {
         String chave = (String) it.next();
         
         if (!chave.equals("uri"))
         {
            String[] valor = (String[]) map.get(chave);
         
            location.append(chave).append("=").append(valor[0]).append("&");
         }
      }
      location.deleteCharAt(location.length() - 1);

      response.setHeader("Location", location.toString());
      response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
   }

Há algum problema que pode haver com isso? Sessões talvez?

Também pergunto se há uma maneira mais fácil, filtros interceptadores, ou algo do gênero que faça isso.

Obs: J2EE 1.3.

Criado 29 de maio de 2009
Respostas 0
Participantes 1