Ver Mensaje Individual
  #5  
Antiguo 13-05-2006
Migue Rguez Migue Rguez is offline
Miembro
 
Registrado: may 2003
Ubicación: Sanlúcar de Bda. (Cádiz)
Posts: 10
Reputación: 0
Migue Rguez Va por buen camino
Gracias seoane!

Sencillamente magistral tu respuesta, es para apuntarla y no olvidarla. Ahora bien, no solucionó mi problema pero consiguió abrirme la mente y obtuve la forma de darle salida a este caso.

Os lo explico para compartirlo con todos vosotros. Prefiero dejar la idea antes que el código ya que cada caso puede ser particular.

La idea principal es hacer un POST conteniendo la respuesta que envía nuestro navegador del formulario HTML. Es decir, qué cosa recibe el servidor para que termine recibiendo perfectamente lo que le enviamos. Para esto puedes usar un programa gratuito de http://www.softx.org/internet-logger.html que logea todo el tráfico web cliente-servidor-servidor-cliente.

Analizamos el log resultante y extraemos toda la respuesta que devuelve el navegador.

Con esta respuesta la dividimos en dos partes: la primera que va desde el principio del log extraido hasta la primera posicion donde comienza el envio del contenido del archivo a enviar por el formulario web. Y la segunda parte que va desde la ultima posicion del archivo a enviar hasta el final. Con lo que el resultante de esta operación son dos archivos txt (si asi queremos guardarlo) sin el contenido del archivo a enviar.

Ahora sólo queda sustituir en ambas partes la información que nos interese tales como el nombre de archivo, el tamaño, la ubicación, y otros datos que se incluyen en el formulario web.

A continuación se carga en un TStreamMemory (SM1) la primera parte, en otro TStreamMemory (SM2) el contenido del archivo (SM2.LoadFromFile(archivo) y en el ultimo (SM3) la última parte del log.

Se concatenan los tres TStreamMemory.

Se prepara la cabecera del TidHTTP en base al log que registramos (idhttp1.Request.Connection, IdHTTP1.Request.ContentType, etc...) y finalmente se envían con TidHTTP.Post()

El resultado es satisfactorio al menos en mi caso. Es un procedimiento un poco enrevesado pero al menos puede ayudarnos a sacarnos del atasco cuando no sabemos que script posee el servidor ni sabemos de que manera procesa la información que le enviamos.

Saludos y espero que esto saque a más de uno de un aprieto.
Responder Con Cita