Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 24-10-2013
elmacu elmacu is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 2
Poder: 0
elmacu Va por buen camino
Roman, como estas?

Te hago una consulta. Por ahi es facil pero no logro dar con la tecla.

Estoy haciendo un POST a una web ASP, y tengo que enviar un token firmado previamente.

Con el WebBrowser lo puedo hacer sin problema, pero con las Indy no logro hacerlo andar.
Según lo que pude encontrar en la web es que viajan de forma distinta los datos o por lo menos van formateados en forma distinta.
Con el WebBrowser envio los datos se la siguiente manera:

Código Delphi [-]

var
  EncodedDataString: string;
  PostData  : OleVariant;
  Headers   : OleVariant;
  i         : integer;
  TokenSend :TStringlist;


begin

  TokenSend:=TStringlist.create;
  TokenSend.LoadFromFile('Token_a_Enviar.txt');

  EncodedDataString := 'XXX='+HTTPEncode('valor1')+'&'+
                                'XXX='+HTTPEncode('valor2')+'&'+
                                'Token='+HTTPEncode(TokenSend.Text);

  PostData := VarArrayCreate([0, length(EncodedDataString)-1], varByte);

  for i := 1 to length(EncodedDataString) do
    PostData[i-1] := ord(EncodedDataString[i]);

  Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;

  WebBrowser1.Navigate('https://..........', EmptyParam, EmptyParam,  PostData, Headers);

Los datos que van dentro del Token_a_Enviar.txt es algo como esto:


Código Delphi [-]
-----BEGIN PKCS7-----
MIIMXwYJKoZIhvcNAQcCoIIMUDCCDEwCAQExCzAJBgUrDgMCGgUAMIGrBgkqhkiG9w0BBwGggZ0E
gZpiYW5jbz0wODE0fGJhbmNvX3NhbT0wODE0fHNlcnZpZG9yPTAwMDF8c3VjdXJzYWw9ODc5OXx0
ZXJtaW5hbD0xNjk5fGNvZF9zZXJ2aWNpbz18cnVicm89fGNvZGlnbz0zMDUzMDU0MzAwMzE1MTIw
MDAyMjQwMDEwMjMwMDAwMjI0MDAxMDIzMTN8SW1wb3J0ZU1hbnVhbD18oIIIWzCCCFcwggY/oAMC
AQICAQQwDQYJKoZIhvcNAQEFBQAwgfwxCzAJBgNVBAYTAkFSMSgwJgYDVQQIEx9DaXVkYWQgQXV0
b25vbWEgZGUgQnVlbm9zIEFpcmVzMSgwJgYDVQQHEx9DaXVkYWQgQXV0b25vbWEgZGUgQnVlbm9z
IEFpcmVzMSIwIAYDVQQKExlCYXBybyBNZWRpb3MgZGUgUGFnbyBTLkEuMSUwIwYDVQQLExxUZWNu
-----END PKCS7-----

Luego en el evento "WebBrowser1NavigateComplete2" me hago del resultado.

Quisiera hacer lo mismo con las Indy.
Ya que aunque me devuelva error de que ingrese mal los datos, la obtención del resultado es más rapida.

Intente de varías manera, pero no lo he logrado...

Este es uno de los intentos, con las Indys.::
Código Delphi [-]

        Token_Send:=TStringlist.create;
        Token_Send.LoadFromFile('Token_a_Enviar.txt');
        Params := TStringStream.create('');
        Params.WriteString(URLEncode('XXX=' + 'valor1' + '&'));
        Params.WriteString(URLEncode('XXX=' + 'valor2' + '&'));
        Params.WriteString(URLEncode('Token=' +Token_Send.Text));

        sHttpSocket := TIdHTTP.Create;
        try
          //como es una llamada a una https, asigno el HandlerSSL
          sshSocketHandler := TIdSSLIOHandlerSocketOpenSSL.Create(sHttpSocket);
          sshSocketHandler.Intercept:= TIdConnectionIntercept(IdLogFile1);
          sHttpSocket.IOHandler := sshSocketHandler;
          sHttpSocket.ReadTimeout:=15000;

          sHttpSocket.Request.ContentType := 'Content-type: application/x-www-form-urlencoded'#10#13;
          //creo el dato que va a obtener la respuesta
          resStreamRes:= TStringlist.create;
          //Hago la llamada
          sHttpSocket.post('https://.....',Params, resStream);
          //Obtengo respuesta y guardo 
          resStreamRes.Add(resStream.DataString);
          resStreamRes.SaveToFile('Resultado.txt');
        Except
        on E: EIdHTTPProtocolException do
        begin
        end;

Por ahora con el WebBrowser salgo del apuro, pero quisiera hacerlo mas optimo...
Desde ya mil gracias!

Sdos.-
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener solo los nuevos correos (seguramente sin respuesta) Enan0 Internet 1 02-04-2010 15:20:07
Enviar datos de un formulario a una pagina barracuda PHP 3 28-11-2007 21:08:40
Enviar datos de un formulario lucasarts_18 HTML, Javascript y otros 2 19-12-2006 17:18:26
Tiempo de respuesta en Volumen de datos saulpm007 Firebird e Interbase 0 13-10-2004 02:19:10


La franja horaria es GMT +2. Ahora son las 15:25:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi