none
¿Como realizar un HTTP POST con datos direccionando a otro sitio web? RRS feed

  • Pregunta

  • Lo que se planea hacer es enviar datos a una pagina de otro sitio web, ese debe ser con un http post, pero lo debo lanzar desde el code behind, estoy utilizando ASP.NET C#. Espero puedan ubicarme en como hacer esto, ya que he estado días probando diferentes formas y no he llegado a una solución.

    De antemano Gracias.

    jueves, 25 de agosto de 2016 14:30

Respuestas

  • ok.. Entonces lo que necesitas es establecer en los controles los id que has puesto y a la hora de que te renderice la pagina no anteponga los nombres de los contenedores. Para ello debes hacer el atributo ClientIdMode a Static en la directiva @Page

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ClientIDMode="Static" %>
    Control.ClientIDMode


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 26 de agosto de 2016 16:46
    Moderador
  • <system.web>
        <compilation debug="true" targetFramework="4.0"/>
        <pages clientIDMode="Static"></pages>
    </system.web>

    Inclusive puedes tener este comportamiento en todas tus paginas si lo estableces en web.config


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 26 de agosto de 2016 16:50
    Moderador

Todas las respuestas

  • hola

    pero necesitas redireccionar a ese otro sitio? si es asi, se me ocurre probar usando el Server.Transfer()

    pero siempre lo vi siendo usado para redireccionar a paginas del mismo sitio, pero se podria probar si aplica a otro diferente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 25 de agosto de 2016 16:04
  • Hola, lo que necesitas es enviar unos datos a otra página dentro de un proceso tuyo de tu codebehind? Has probado esto?

    string URI = "http://www.myurl.com/post.aspx";
    string myParameters = "param1=value1&param2=value2&param3=value3";
    
    using (WebClient wc = new WebClient())
    {
        wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        string HtmlResult = wc.UploadString(URI, myParameters);
    }


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 25 de agosto de 2016 16:29
    Moderador
  • string URI = "http://www.myurl.com/post.aspx";
    using(WebClient client = new WebClient())
    {
        var reqparm = new System.Collections.Specialized.NameValueCollection();
        reqparm.Add("param1", "value1");
        reqparm.Add("param2", "value2");
        byte[] responsebytes = client.UploadValues(URI, "POST", reqparm);
        string responsebody = Encoding.UTF8.GetString(responsebytes);
    }


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 25 de agosto de 2016 16:33
    Moderador
  • hola, gracias por tu contestación.

    Ya he probado hacerlo así antes pero no me ha resultado.. :( la verdad ya me he quedado sin ideas he probado tantas cosas que ya no se me ocurren otras.

    saludos.

    jueves, 25 de agosto de 2016 22:47
  • Puedes especificar qué no da resultado? Que vas a enviar a la otra pagina?Mostrar algo de código? Así podremos ayudarte mejor.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 25 de agosto de 2016 22:56
    Moderador
  • Hola..

    Solo planeo enviar unos cuantos parámetros a otra pagina, para realizar pagos en linea. 

    Utilice el ambas soluciones que me presentaron ademas también 

    Intente utilizar el postbackUrl, el cual en teoría debería funcionar ya que se realiza el envió de los datos del formulario.

    <form >
        <div style="display:inline-block;">
                <asp:HiddenField runat="server"  ID="Ds_Merchant_Amount" Value=""></asp:HiddenField>
                <asp:HiddenField runat="server"  ID="Ds_Merchant_Currency" Value=""></asp:HiddenField>
                <asp:HiddenField runat="server"  ID="Ds_Merchant_Order" Value=""></asp:HiddenField>

             <asp:ImageButton ID="btn"   runat="server" Visible="true"   Height="49px" style="margin-top: 0px" PostBackUrl="URL ala que envió los datos"/>

    </div>

    </form>

    El problema aquí es que al momento de realizarse el post en lugar de enviar los nombres como los tengo definidos

    Ds_Merchant_Amount

    Ds_Merchant_Currency

    Ds_Merchant_Order

    Me agrega información extra, por lo cual la pagina nunca recibe los parámetros.

    p$lt$ctl01$wPP$p$lt$ctl00$ProcesarPagoBBVA$Ds_Merchant_Amount

    wPL$p$lt$ctl01$wPP$p$lt$ctl00$ProcesarPagoBBVA$Ds_Merchant_Currency

    1$wPL$p$lt$ctl01$wPP$p$lt$ctl00$ProcesarPagoBBVA$Ds_Merchant_Order

    por ello busco métodos alternos para realizar el http post.

    Gracias por su ayuda



    • Editado ARYAMNY viernes, 26 de agosto de 2016 16:45
    viernes, 26 de agosto de 2016 16:26
  • ok.. Entonces lo que necesitas es establecer en los controles los id que has puesto y a la hora de que te renderice la pagina no anteponga los nombres de los contenedores. Para ello debes hacer el atributo ClientIdMode a Static en la directiva @Page

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ClientIDMode="Static" %>
    Control.ClientIDMode


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 26 de agosto de 2016 16:46
    Moderador
  • <system.web>
        <compilation debug="true" targetFramework="4.0"/>
        <pages clientIDMode="Static"></pages>
    </system.web>

    Inclusive puedes tener este comportamiento en todas tus paginas si lo estableces en web.config


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 26 de agosto de 2016 16:50
    Moderador