Ver Mensaje Individual
  #11  
Antiguo 27-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé realmente porqué ocurre, porque, los navegadores que he probado "pueden con ello", pero, en el archivo en cuestión parece darse un problema en la línea 191, columna 7. En ese punto puede verse lo siguiente (examinando el código fuente desde Firefox):

Código:
<td ?owrap align=right>
Y es a partir del signo de interrogación donde deja de descargar (o no puede mostrar... ya digo que no estoy seguro de qué ocurre realmente) el componente IdHttp. Debe tratarse de un problema con la condificación de caracteres... aunque ya digo que los navegadores que he probado se lo tragan, el propio archivo parece tener algunos problemas.

He probado a usar WinInet (tal como muestra seoane), pero, sigue produciéndose el mismo problema. También he probado con "UrlMon.URLDownloadToFile()", pero, igual, el mismo caso.

Pero, para usar URLMon he tenido que descargar un archivo, y me ha dado por revisarlo... y, efectivamente, se descarga el código completamente (superando el error que contiene el archivo HTML), y entonces me he dicho, leche, pues es el Memo, que no puede mostrar el código fuente a partir del "error" (línea 191, etc.).

Pero no... no es del todo el Memo. Porque si pruebas con algo como esto:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  t: TStrings;
begin
  t := TStringList.Create();
  try
    t.Text := IdHTTP1.Get('http://casacimar.com.bo/tarea.html');
    t.SaveToFile('C:\test.txt');
  finally
    t.Free();
  end;
end;

... verás que tampoco descargas todo el código fuente del archivo, sino que se "queda" en el punto exacto del supuesto error. Vale. ¿Y entonces qué? Pues el caso es que el archivo se descarga completamente. Fíjate que viene a ocupar unos 12 KB, y estas son las cabeceras que envía la respuesta HTTP:

Código:
Date: Thu, 27 Sep 2007 02:05:00 GMT
Server: NOYB
Last-Modified: Thu, 27 Sep 2007 01:05:42 GMT
ETag: "32c454-3139-91b7c580"
Accept-Ranges: bytes
Content-Length: 12601
Content-Type: text/html
O sea, que el problema lo tenemos en Delphi, que parece "cortar" el contenido del archivo en cuanto llegamos al error de marras. He probado con String, AnsiString, WideString, PChar... pero, nada. No pasa del error. Como se ve el archivo se descarga completamente, pero, no es posible mostrarlo en un Memo, ni copiarlo al portapeles, ni guardarlo en un archivo mediante un TStrings.

Por el momento no se me ocurre qué más hacer. Si tengo que quedarme con algo... tal vez con URLMon, puesto que consigue descargar el archivo completo... ¡pero IdHTTP también, lo que ocurre es que no hay manera de obtener el contenido más allá de donde se localiza el error del archivo y por tanto no podemos guardarlo (como hace URLMon... por su cuenta... a saber cómo)!

Y, por otro lado... de qué te serviría tener el archivo con su contenido completo (aunque erróneo, o problemático, cuando menos), si no hay manera de cargarlo en un Memo, por ejemplo... Pero yo lo dejo aquí, por el momento, a ver si alguien a partir de esto puede aportar alguna otra cosa. Si a mí se me ocurre alguna la comentaré por aquí.

Siento no poder dar una respuesta válida, pero, espero al menos que se entendiera el rollo que he soltado, que, puesto que he ido escribiéndolo según hacía pruebas, lo mismo no ha quedado del todo "cuadrado".
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 27-09-2007 a las 04:23:20.
Responder Con Cita