Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Error al descargar actualizacion de mi aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=68847)

sitrico 09-07-2010 23:49:15

Error al descargar actualizacion de mi aplicacion
 
Al intentar realizar la actualización de una aplicación desde internet me arroja el error: 'HTTP/1.1 301 Moved Permanently'

La actualizacion funcionaba perfecto hasta hace almenos 3 meses, pero de pronto dejo de funcionar. No he modificado ni recompilado el ejecutable y los url de descarga son válidos.

url actual:
http://www.iva32.150m.com/Iva32/VersionActual.ini

Si desde el explorador descargo el arhivo (firefox 3.6.6) descarga perfecto pero desde la aplicación no.

IdHttp es un componente de Indy 10, no estoy seguro de que version exactamente.

Código Delphi [-]
procedure TfActualizacionOnLine.Descargar(Origen,Destino:String);
Var
Stream: TFileStream;
begin
If FileExists(Destino) then
   SysUtils.DeleteFile(Destino);
Stream := TFileStream.Create(Destino, fmCreate);
try
   IdHTTP.Get(Origen,Stream); // error
//   IdFTP1.Get(Origen,Stream); // prove tambien con IdFTP
   tDescargado := tDescargado + Stream.Size;
finally
   Stream.Free;
   end;
end;

El error se produce en la linea del Get

Gracias de verdad estoy perdido con ese error.

xEsk 11-07-2010 02:24:03

Hola,

El error es muy claro: "HTTP/1.1 301 Moved Permanently" significa que el contenido que buscas no se encuentra en esta URL, pero la propia respuesta HTTP debería darte dónde se puede encontrar el contenido (parámetro Location).

Hace mucho tiempo que no uso los Indy, pero debería haber alguna propiedad que hable de los "redirects" o algo por el estilo.

En caso de que no existiera una propiedad parecida a esto, deberás hacerlo de forma manual, capturando el parámetro Location y hacer un GET a esa URL.

Saludos.

Edit: La propiedad que te comentaba se llama "HandleRedirects", debes poner esta propiedad a True, y en principio, se debería de solucionar el problema.

Ejemplo:
Código Delphi [-]
procedure TfActualizacionOnLine.Descargar(Origen,Destino:String);
Var
Stream: TFileStream;
begin
If FileExists(Destino) then
   SysUtils.DeleteFile(Destino);
Stream := TFileStream.Create(Destino, fmCreate);
try
   IdHTTP.HandleRedirects := True; // activamos los "saltos" automáticos (errores 3xx)
   IdHTTP.Get(Origen,Stream); // error
   tDescargado := tDescargado + Stream.Size;
finally
   Stream.Free;
   end;
end;

sitrico 13-07-2010 00:15:14

Mil gracias xEsk, la verdad yo no lo veia tan claro ;) Ya funciona otra vez.


La franja horaria es GMT +2. Ahora son las 17:34:17.

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