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