Hola que tal. A ver si alguien me puede echar la mano. Estoy trabajando con
Indy 10 en Rad Studio 2010. Con el componente
TIdHTTP. Más específicamente
con C++. Soy completamente nuevo con Indy.
Mis problemas son los siguientes:
- Para verificar si existe una URL utilizo Http1->Head(URL) pero con ciertos servidores no funciona se queda esperando respuesta un buen rato y me desespero y termino la aplicación. Por ejemplo con google y entre otros. También me pasa lo mismo cuando coloco una URL inválida de mi localhost. ¿Alguien sabe qué pasa?
- He estado haciendo pruebas con varios sitios, descargando varios archivos. Bueno el problema es que mi TIdHTTP lo tengo dentro de un catch algo así:
Try {
Http1->Get(URL,stream);
}
Catch(…) {
Agregar_error(Http1->ResponseCode);
}
Bueno a que todo esto, pues que en pruebas anteriores cuando descargaba bien un documento no agregaba nada a mi log de errores. Pero en pruebas reciente agrega:
Error 200 y la URL. Algo así:
Error 200 direccion.com/file.pdf
¿Que no se supone que no se debería ejecutar el catch? ¿Porque en pruebas anteriores no pasaba esto? Ahora ¿Siempre genera un Throw el método “Get”?, aunque todo este bien. ¿O que pasa? Si no pongo el try-catch a cada rato me salta el mensaje de excepción Not Found o alguno similar.
- Relacionado con el punto anterior, me he dado cuenta que al descargar un archivo a veces me dice Error 404 Not Found pero “el archivo está ahí” si existe no sé porque hace esto. O bien pone 406 Not Acceptable. Digo ¿Por qué lo hace con ciertos archivos del mismo tipo? ¿Qué diablos pasa? Si descarga bien un pdf luego al intentar descargar otro marca Not Found o Not Acceptable. Si en mi Request tengo:
Http1->Request->Accept = “*/*”;
Http1->Request->ContentType = “application/pdf”;
Http1->Request->ContentLength = -1;
Quizá falta agregar algo mas ya no sé.
- Bien este es mi último punto espero no haberlos fastidiado. Si me pudieran explicar cómo funciona el método Http1->Post() para poder enviarle datos de logeo a un script. Y como guardar la sesión o relacionarla con el TIdCookieManager.
Muchas gracias por leer todo esto y
espero alguien pueda echarme la mano porque me urge sacar esto.