Recentemente estava programando o envio de informa????es de pagamento para o Komerci (estrutura de pagamentos da Redecard) e em certo momento precisaria realizar um POST a um endere??o passando par??metros/vari??veis a ela. Antes de partir para a solu????o, vou revisar aqui alguns conceitos b??sicos que podem ser usados para esse tipo de envio:
- Responde.Redirect: Por esse m??todo s?? podemos passar os par??metros via GET;
- Server.Transfer: Por esse m??todo podemos usar o POST mas se o destino estiver no mesmo dom??nio da aplica????o;
- HttpWebRequest: Por esse m??todo voc?? pode fazer uma requisi????o atrav??s de uma convers??o dos dados em bytes passando via POST/GET, contudo n??o h?? como fazer um redirecionamento;
- WebClient: Por esse m??todo pode-se realizar a passagem de par??metros, mas tamb??m n??o consegue fazer o redirecionamento ap??s o envio.
Analisando a melhor forma de fazer isso, encontrei um artigo no Code Project na qual baseei-me para fazer o meu e simplifiquei/facilitei mais o processo. Quando criamos um Web Form ele j?? vem com uma tag form. Adicionei dentro dele um Literal para adicionarmos meus par??metros que ser??o gerados via Code-Behind.
Agora vamos criar um m??todo que ir?? criar os inputs com atributo hidden e seus respectivos valores, montar um JavaScript que for??a o POST e “startar” o processo:
private void PostRedirectAspNet()
{
StringBuilder formulario = new StringBuilder();
// Adiciono todos os campos e seus valores que devem ser passados via POST
formulario.Append(“<input type=”hidden” name=”TRANSACAO” value=”04″>”);
// Crio um JavaScript para for??ar o POST na p??gina corrente
formulario.Append(“<script language=”javascript”>”);
formulario.Append(“var theForm = document.forms[‘formAsp’]; if (!theForm) { theForm = document.formAsp; } “);
formulario.Append(“theForm.action = “http://thiagomarcal.blogspot.com”;”);
formulario.Append(“theForm.method = “post”;”);
formulario.Append(“theForm.submit();”);
formulario.Append(“</script>”);
// Aplica o script gerado no Literal para iniciar o processo
FormularioPost.Text = formulario.ToString();
}
Assim, basta cham??-lo onde quiser que ele ir?? gerar as tags HTML contendo as informa????es desejadas, realizar?? o POST e, consequentemente, seu redirecionamento. Bem simples, n??o? Esse m??todo (de fazer) pode ser aproveitado para quaisquer linguagem de programa????o (PHP, Java, ASP, .NET, CodFusion, etc). O importante ?? como providenciar seu funcionamento de acordo com a l??gica.