Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Descargar archivo con redirección (https://www.clubdelphi.com/foros/showthread.php?t=42195)

voci 06-04-2007 19:48:18

Descargar archivo con redirección
 
Saludos a todos, estoy intentando bajar un archivo de una página, debo decir que el navegador lo descarga sin falta de ninguna intervención.

Como no se si está permitido escribir la dirección de la web no la pongo directamente, además la web necesita trabajar con una cookie de sesión y por supuesto utiliza el método de redireccionamiento.

Este es el código que implemento:

Código:

procedure TForm1.Button1Click(Sender: TObject);
var
  IdHttp: TIdHttp;
  Contenido: TMemoryStream;
  Url: String;
Begin
  Contenido := TMemoryStream.Create;
  IdHttp.HandleRedirects := true;
  IdHttp.AllowCookies := true;
  Url:='http://xxxxxx.com?id=xxxxxxx&key=yyyyyyy';
  IdHttp.Get(Url, Contenido);
  Contenido.SaveToFile('C:\archivo.rar');
  Contenido.Free;
  IdHttp.Free;
end;

Pero cuando miro el archivo creado veo que es el código html de la página web donde se encuentra la descarga en vez del archivo propiamente dicho.

Gracias a todos.

seoane 06-04-2007 20:16:20

El problema puede ser que la descarga del archivo se inicie por medio de javascript, como el componente TIdHttp no interpreta el contenido de lo que descarga y mucho menos los scripts que contiene, no es capaz de iniciar la descarga del archivo.

Lo primero seria saber como se inicia realmente esa descarga, para eso analiza el código fuente de la pagina web. Si aun así no encuentras lo que buscas, utiliza un proxy para analizar la comunicación entre el navegador y el servidor web. Un buen proxy es http://www.fiddlertool.com/

voci 08-04-2007 16:16:41

Estoy mirando la comunicación entre el navegador y el servidor web con el programa que comentas, de momento no he conseguido aclarar nada pero sigo intentando comprender alguno de los parámetros que devuelve dicho programa.

Gracias.

dec 09-04-2007 06:41:00

Hola,

Tengo dudas acerca de lo que entendemos como "redireccionamiento". Si se trata de que al acceder a un determinado recurso de la Red, el Servidor indica que este se encuentra en otro lugar, al que se dispone a redireccionarnos, si se trata de esto, digo, el propio componente "TIdHttp" puede hacerse cargo de las redirecciones HTTP:

Código Delphi [-]
IdHTTP1.HandleRedirects := true;

Incluso podemos especificar un máximo de redirecciones antes de considerar perdido al archivo que requerimos:

Código Delphi [-]
  IdHTTP1.RedirectMaximum := 5;
  IdHTTP1.HandleRedirects := true;

voci 09-04-2007 15:22:27

Si, precisamente a eso me refiero, he credo un simple programa que utilizo para descargar pequeños ficheros y cuando falla la descarga, como es el caso de esta dirección intentar comprender el motivo.

Lo que comentas lo tengo contemplado en el código, bueno el RedirectMaximum lo he elevado un poco:

Código Delphi [-]
IdHTTP1.RedirectMaximum := 15;

Gracias por el interés.


La franja horaria es GMT +2. Ahora son las 01:56:55.

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