Pugile Ens

Registrado: 26 Dic 2006Mensajes: 29Ubicación: Mexico
|
Publicado: Jue 17 Mar, 2011 6:37 am Asunto: Ayuda urgente con Indy TIdHTTP |
|
|
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. Soy completamente nuevo con Indy.
Mis problemas son los siguientes:
1.- 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 | Cita: | | http://www.google.com.mx | y entre otros. También me pasa lo mismo cuando coloco una URL inválida de mi . ¿Alguien sabe qué pasa?
2.- 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í:
| Cita: | | Error 200 direccion.com |
¿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.
3.- 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é.
4.- Este no es tanto un problema de Indy sino más bien mío. Resulta que tengo un poco de problemas con las URLs relativas del tipo ../../algo/archivo.pdf
Se supone que para completar la URL se agrega la parte en donde está el archivo algo así:
Tenemos que cuando entro al sitio | Cita: | | http://www.direccion.com/ | el navegador coloca:
| Cita: | | http://www.direccion.com/web/main/index.htm |
Obtengo el Host:
Host: www.direccion.com
Dentro de esa dirección principal | Cita: | | http://www.direccion.com/web/main/index.htm | Encuentro un link, algo así: | Cita: | | http://www.direccion.com/enlaces/S4/ |
Y dentro de este enlace tenemos:
| Cita: | | ../../algo/archivo.pdf |
Entonces él ../ Me dice que suba un nivel en el directorio de carpetas y como tengo 2 serian 2 niveles entonces me estaría indicando que busque en:
| Cita: | | http://www.direccion.com/algo/archivo.pdf |
Pero aquí erro pues la dirección debería ser:
| Cita: | | http://www.direccion.com/web/main/algo/archivo.pdf |
Es decir me indica que me dirija a la raíz y yo tengo como raíz | Cita: | | http://www.direccion.com/ | no | Cita: | | http://www.direccion.com/web/main/ | si coloco esta URL a todos los links relativos, muchos quedarían inservibles. Como se entera el navegador que la raíz es hasta el main/
5.- 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. |
|