JSF - Envio e Recebimento de dados via POST para/de URL Externas

6 respostas
G

Boa noite pessoal,
estou necessitando de duas coisas:

  • Enviar dados via POST para um URL Externa;
  • Receber dados via POST de uma URL Externa;

Lembrando que estou utilizando JSF e gostaria de realizar as operações de envio dentro dos MBeans (pelo menos para o envio dos dados).
As operações para receber dados irei criar um servlet para fazer o tratamento.

Porem, como disse, para envio gostaria de fazer diretamente a partir dos managed beans.
Não estou aqui procurando a solução pronta, apenas gostaria de saber se alguem possui algum material bacana que possa me fornecer para eu estudar sobre o assunto.

Abraços.

6 Respostas

D

Você não pode receber dados via POST de um outro site e processa-los no ciclo de vida do JSF, isso porque o JSF só vai aceitar requisições post feitas por algum componente da view atual, logo essa requisição seria inválida.
Para enviar dados para uma URL externa via post deve ser fácil usando a class java.net.URL e java.net.URLConnection.

G

Então amigo, para receber os dados irei implementar um servlet que faça essa trabalho para mim, recebendo os dados necessários e direcionando o usuário para dentro da aplicação com jsf.

O problema mesmo seria apenas enviar os dados a partir do managed beans, pois preciso enviar esses dados via post para uma url externa, alem de direcionar o usuário para a mesma.
Agradeço pela resposta, irei pesquisar sobre os assuntos mencionados.

Abraços.

G

Opa amigo, pesquisa sobre o URLConnection,
e pelo que pude perceber consigo enviar os dados via post para uma URL Externa, porem os dados são enviados sem que ocorra um direcionamento do usuário para a mesma URL. É isso mesmo? Se eu estiver errado, por favor me corrija.

Desculpe, mas esqueci de mencionar que: Ao enviar os dados via POST para a URL Externa necessito também direcionar o usuário, via browser, para essa URL.

Por exemplo: supondo que eu queira enviar o nome e o e-mail do usuario para www.exemplo.com.br, ao efetuar alguma ação em minha aplicação o usuário será levado para a página mencionada (www.exemplo.com.br) “levando” com eles os dados (nome e email) via post. Continuarei pesquisando.

Agradeço a atenção.
Abraços.

D

Então faça:

<form action="http://urlexterna.com" method="post">
    <!-- Aqui você coloca o restando do formulário -->
</form>

Esse método vai gerar uma requisição post para “url externa” apartir do browser do cliente e o mesmo será redirecionao para onde a “url externa” em questão leva-lo. Só é importante lembrar que muitos frameworks (e por consequência sites) usam mecanismos de segurança em requisições POST como tokens de autenticidade. Você terá que lidar com esses mecanismos ou o site vai rejeitar a requisição.

G

Então amigo, mas os dados que serão enviados via post são alimentados por um managed bean, jsf,
desta forma o meu formulário não deverá se obrigatoriamente um formulário JSF?

Quer dizer, o código como o mostrado abaixo funcionaria normalmente? Com os dados vindos do bean?

<form method="post" action="https://www.endereco.com.br/qualquercoisa">
            <input type="hidden" name="valor1" value="#{bean.valor1}"/>
            <input type="hidden" name="valor2" value="#{bean.valor2}"/>
            <h:commandButton value="Enviar" action="#{bean.acao}"/>
</form>

Acredito que não irá funcionar =/
Vou testar aqui é ver o que acontece. Valeu pela ajuda, abraços

G

Não funciona, =/
Direciona o usuário para a página desejada com os valores corretos, porem a ação não é executada no managed bean.

Necessito que a ação do bean seja chamada para gravar algumas informações antes de envia-las.
Continuarei pesquisando.

Abraços.

Criado 11 de março de 2011
Ultima resposta 11 de mar. de 2011
Respostas 6
Participantes 2