Enviando dados via post utilizando JSF não funciona

3 respostas
JotaJota

Fala Gujeiros.
Eu preciso enviar dados do meu site para outro servidor (que nem é ambiente java)
Estes dados estão ok.
Mas quando eu crio a conexão e espero que ele reinderize para o site com a passagem de parametro, esta reinderização não acontece.

Vou explicar mais ou menos o que eu fiz:
Eu tenho uma pagina que tem um h:CommandButton
Este botão chama o bean que tem um metodo publico.
O metodo publico chama uma classe que monta para mim o HttpURLConnection passando todos os parametros necssarios que preciso enviar.
A minha intenção com esta classe é:
Pegar os atributos que preciso, criar a HTTPURLConnection.
enviar estes dados via POST e então pelo proprio componente (HTTPURLConnection) ele fazer o redirecionamento ... para o site...
A parte de enviar os dados é só a primeira parte, depois que eu envio eu tenho que ir para a pagina do site que eu estou enviando.
o site vai receber meus dados e vai concluir o procedimento interagindo com o usuário.

Eu não sei o que retornar para o button para que ele faça a reinderização para o outro site. onde terminara o processo do meu site.
O problema está no fato de que eu estou retornando um null para o metodo que o botão chama...
O que eu deveria retornar para garantir que o HTTPURLConnection reinderizasse corretamente?
Estou fazendo da maneira correta?
Existe outra maneira de fazer isto?

Agradeço desde já toda e qualquer informação que me permita encontrar uma solução.
Obrigado

Segue agora o código que produzi com minha ideia.

<h:CommandButton id="btnConfirmar" value="Confirmar pedido" action="#{bean.criaHttpConnection}" />

//No bean:

public String criaHTTPConnection(){
	SendPagSeguro formPagSeguro = new SendPagSeguro (getCompra());
return null;
}

//E na pagina que cria a HTTPURLConnection temos:

package br.com.componentes;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

import br.com.lasvegas.modelo.Compra;
import br.com.lasvegas.modelo.ItemCompra;

public class SendPagSeguro {
	
	public SendPagSeguro(Compra compra) {
		setCompra(compra);
		enviaCompraPagSeguro();

	}
	
	private Compra compra;	
	private static final String PADRAO_ENCODE = "ISO-8859-1";
	private static final String EMAILVENDEDOR = "[email removido]";
	private static final String TIPOCARRINHO = "CP";
	private static final String TIPOMOEDA = "BRL";
	private static final String UOLURL = "https://pagseguro.uol.com.br/checkout/checkout.jhtml";
	
	private void enviaCompraPagSeguro(){
		try {
			StringBuilder parametros = new StringBuilder();            
			//dados iniciais
			parametros.append(URLEncoder.encode("email_cobranca",PADRAO_ENCODE)+"="+URLEncoder.encode(EMAILVENDEDOR,PADRAO_ENCODE));
			parametros.append("&"+URLEncoder.encode("tipo",PADRAO_ENCODE)+"="+URLEncoder.encode(TIPOCARRINHO,PADRAO_ENCODE));
			parametros.append("&"+URLEncoder.encode("moeda",PADRAO_ENCODE)+"="+URLEncoder.encode(TIPOMOEDA,PADRAO_ENCODE));
			parametros.append("&"+URLEncoder.encode("tipo_frete",PADRAO_ENCODE)+"="+URLEncoder.encode(getCompra().getFrete().getIdFrete(),PADRAO_ENCODE));
			
			//dados do cliente
			parametros.append("&"+URLEncoder.encode("cliente_nome",PADRAO_ENCODE)+"="+URLEncoder.encode(getCompra().getCliente().getNome(),PADRAO_ENCODE));

			
			//dados dos itens
			int indice = 1;
			for (ItemCompra item : getCompra().getItemCompra()) {
				parametros.append("&"+URLEncoder.encode("item_id_"+indice,PADRAO_ENCODE)+"="+URLEncoder.encode(item.getProduto().getId().toString().toString(),PADRAO_ENCODE));				indice += 1;
			}
			URL urlSend = new URL(UOLURL);
			HttpURLConnection connection = (HttpURLConnection) urlSend.openConnection();			
			connection.setDoOutput(true);
			connection.setDoInput(true);
			connection.setUseCaches(false);
            connection.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");  
            connection.setRequestProperty("request-method","POST"); 
            connection.setRequestProperty("Content-Length", Integer.toString(parametros.length()));
            connection.setFollowRedirects(true);
            connection.setInstanceFollowRedirects(true);
            
            connection.connect();
    		
    		System.out.println(parametros.toString());
            OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "iso-8859-1");
            writer.write(parametros.toString());
            writer.flush();
            writer.close();
            connection.getInputStream();		
			
		} catch (MalformedURLException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());		
		
		} catch (IOException e) {  
        System.err.println(e);  
        System.out.println(e.getMessage());
    }  
	}


	public Compra getCompra() {
		return compra;
	}


	public void setCompra(Compra compra) {
		this.compra = compra;
	}

}

vlw

3 Respostas

A

Cara você conseguiu utilizar o pagseguro? o que você fez para resolver seu problema?

F

Conseguiram Resolver ?
Caso não… me avisem que eu vou verificar esse problema.

Abços!

JotaJota

antigamente, a gente enviava uma requisição para o Pagseguro e na plataforma do pagseguro você poderia infomar o seu webservice , que era onde o pagseguro enviava os dados e esse seu webservice servia para catar as transações realizadas no site do pagseguro, ou se você nao tinha webservice você poderia apenas consultar.

O erro na verdade não era um erro.
os dados eram enviados, mas a reinderização nao acontecia porque a chamada era somente no backend. eu só chamava a url mas nao retornava nada.
acho que um commandlink resolveria o problema ao invés de um commandButton.

hoje pelo que vi aqui mudou tudo.

Eles padronizaram isso.
Hoje você baixa um pacote de biblioteca especial pra java:
https://pagseguro.uol.com.br/v2/guia-de-integracao/downloads.html#!Bibliotecas

Aqui tem uma documentação completa
https://pagseguro.uol.com.br/v2/guia-de-integracao/tutorial-da-biblioteca-pagseguro-em-java.html

Criado 28 de outubro de 2010
Ultima resposta 9 de jan. de 2015
Respostas 3
Participantes 3