Ver Mensaje Individual
  #1  
Antiguo 26-01-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Rellenar campos en página WEB y obtener resultado

Hola compañeros.

Pues aquí estoy, atascado en una tontería (que seguro es una tontería) y no acabo de encontrar salida. No se del tema y estoy dando "palos de ciego" sin encontrar la solución.

Se trata de una página web en la que se introduce la ruta de un fichero y se pulsa un botón (CALCULAR IBP); Eso devuelve otra página de resultados que me gustaría mostrar en Delphi. Mi problema radica en cómo pasar esos parámetros y "pulsar" el botón desde Delphi.

Os adjunto el código de la web (paginaTest.zip)
El código simplificado de la página es este:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="es">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" href="iestilos.css" type="text/css"></head>

<body bgcolor="#ffffff">
<table border="0" cellpadding="0" cellspacing="0" width="543">
        <tbody><tr>
          <td valign="top" width="94%">
          <form name="form1" action="prebabel_e.asp" method="post" enctype="multipart/form-data">
             <input name="UDO" value="Desconocida" type="hidden">
             <input name="IPO" value="88.6.227.203" type="hidden">
             <input name="ENT" value="" type="hidden">
             <input name="CFO" value="FFFFFF" type="hidden">
             <input name="CTE" value="000000" type="hidden">
             <input name="CTA" value="BDBDBD" type="hidden">
             <input name="ORI" value="iframe" type="hidden">
             <table border="0" cellpadding="0" cellspacing="0" width="596">
               <tbody><tr>
                 <td valign="top" width="298"><font color="#000000">&nbsp;<b><font size="4">IBP Index</font></b></font></td>
                 <td width="298">
      <p align="center"><b>+ info <a target="_blank" href="http://www.ibpindex.com/">
      <font color="#000000">www.ibpindex.com</font></a></b></p></td>
               </tr>
               <tr>
                 <td colspan="2" valign="top">&nbsp;</td>
               </tr>
               
               <tr>
                 <td colspan="2" valign="top"><font color="#000000">Escoge un archivo</font></td>
               </tr>
               <tr>
                 <td colspan="2" valign="top">
                 <p><font color="#000000" face="Verdana" size="1">
                 <input name="fichero" size="69" type="file"></font></p></td>
               </tr>
               
             </tbody></table>
              <div align="center">
              <table style="border-collapse: collapse;" border="0" cellpadding="0" width="100%">
                <tbody><tr>
                  <td width="50%">
                  <p align="center"><b>
                  <font color="#000000" face="Verdana" size="1"><span id="spansubiendo"></span>&nbsp;</font></b></p></td>
                </tr>
  
                <tr>
                  <td width="50%">
                  <p align="center">
<font color="#000000" face="Verdana" size="1">
<input name="submi" value="Calcular IBP" onclick="subir()" style="width: 100px; height: 20px;" type="button">
</font>
                  </p></td>
                </tr> 
                  <tr>
                <td valign="top">
                &nbsp;</td>
                  </tr>
                  <tr>
                <td valign="top">
                &nbsp;</td>
                  </tr>

                  </tbody></table><br></div>
          </form></td>
        </tr>
      </tbody></table>


<script language="JavaScript">
function subir(){
marcado = 0

   alert ("iniciar Subir");

  archivo = document.form1.fichero.value;
   mierror = ""; 
   if (!archivo) { 
       mierror = "No has seleccionado ningún archivo"; 
   }else{ 
 

         cadenasubiendo = "";
          subiendo();
         form1.submit(); 
         return 1; 
       
   } 
   alert (mierror); 
   return 0; 
}
function subiendo(){


if (!document.layers && !document.all && !document.getElementById) return;
if (cadenasubiendo == "") cadenasubiendo = "Calculando IBP, espera por favor";
else if (!cadenasubiendo == "") cadenasubiendo = "";
if (document.layers) {
document.layers.spansubiendo.document.write(cadenasubiendo);
document.layers.spansubiendo.document.close();
}
else if (document.all) spansubiendo.innerHTML = cadenasubiendo;
else if (document.getElementById) document.getElementById("spansubiendo").innerHTML = cadenasubiendo;
setTimeout("subiendo()", 200);
}
</script>

</body></html>
Al final hay código JavaScript que es el que se llama al pulsar el botón.

La web "on line" es esta: http://www.ibpindex.com/ibpweb.asp?LAN=es

Si queréis probar con una ruta de ejemplo para ver el resultado os adjunto un ZIP (ruta_de_ejemplo.zip) con una.

He revisado mensajes sobre idHTTP utilizando el método Post, como estos:
http://www.clubdelphi.com/foros/show...ht=IDhttp.Post
http://clubdelphi.com/foros/showthre...917#post307917

Pero la verdad es que no se muy bien lo que estoy haciendo ni si lo estoy haciendo bien.



El cuadro de texto tiene las propiedades:
Type=file
Size=69
Name=fichero


Y el botón de CALCULAR IBP:
Type=button
style=...
OnClick=subir()
Value=Calcular IBP
Name=Submi


He probado con un código como este:

Código Delphi [-]
var
  resp, ruta:string;
  TS:TStrings;
  Stream:TIdMultipartFormDataStream;
begin
  Randomize;
  ruta := Trim(Edit1.Text);
  if ruta <> '' then begin
    Stream := TIdMultipartFormDataStream.Create;
    Stream.AddFile('fichero', ruta, 'file');
    Stream.AddFormField('submi', 'submi');

    resp := IdHTTP.Post('http://www.ibpindex.com/ibpweb.asp?LAN=es', Stream);

  end;

  TS := TStringList.Create;
  TS.Add(resp);
  TS.SaveToFile('r:\response' + IntToStr(Random(1000)) + '.txt.html');
  FreeAndNil(TS);

y con otro como este:

Código Delphi [-]
var
  Response: String;
  AResponseContent: TMemoryStream;
  resp, ruta:string;
  TS:TStrings;
begin
  Randomize;
  AResponseContent := TMemoryStream.CReate();
  ruta := Trim(Edit1.Text);
  if ruta <> '' then begin

    Params.Clear;
    Params.Values['Fichero'] := ruta;
    Params.Values['submi'] := 's';
    resp := IdHTTP.Post('http://www.ibpindex.com/ibpweb.asp?LAN=es', Params);
  end;

  TS := TStringList.Create;
  TS.Add(resp);
  TS.SaveToFile('r:\response' + IntToStr(Random(1000)) + '.txt.html');
  FreeAndNil(TS);

  FreeAndNil(AResponseContent);

Pensando que en resp obtendría la página con el resultado, pero nada.
En ambos casos ruta contiene un path con un fichero de una ruta.

La verdad es que no acabo de entender cómo funciona el tema del Post; También he visto ejemplos pero no son exactamente iguales (por el tema de JavaScript) y por eso tal vez no me está funcionando.

¿Algun alma caritativa que me explique cómo va?

Un saludo.
Archivos Adjuntos
Tipo de Archivo: zip PaginaTest.zip (1,9 KB, 37 visitas)
Tipo de Archivo: zip ruta_de_ejemplo.zip (8,5 KB, 38 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita