Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
Poder: 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
  #2  
Antiguo 26-01-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Neftali
Si queréis probar con una ruta de ejemplo para ver el resultado os adjunto un ZIP (ruta_de_ejemplo.zip) con una.
He probado y me marca error:

Cita:
Error: Formato incompatible o mal seleccionado de la lista
// Saludos
Responder Con Cita
  #3  
Antiguo 26-01-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ja, ja, perdón. Sí funciona el archivo ejemplo.

// Saludos
Responder Con Cita
  #4  
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
Poder: 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
Los vuelvo a subir; Prueba. Ya sabes que más de una vez he tenido problemas con los ZIP.

A los .RAR.ZIP hay que quitarles la extension .ZIP (en realidad son RAR)
Archivos Adjuntos
Tipo de Archivo: zip ruta_de_ejemplo.rar.zip (5,9 KB, 35 visitas)
Tipo de Archivo: zip ruta_de_ejemplo.zip (8,4 KB, 27 visitas)
Tipo de Archivo: zip PaginaTest.zip (1,3 KB, 41 visitas)
Tipo de Archivo: zip PaginaTest.rar.zip (1,2 KB, 30 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
  #5  
Antiguo 26-01-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Je, je. El problema no era el zip, el problema era que había que extraerlo del zip antes de mandarlo al IBP

// Saludos
Responder Con Cita
  #6  
Antiguo 26-01-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola Germán, creo que ya está.

En el primer código que pones sobraría la línea

Código Delphi [-]
Stream.AddFormField('submi', 'submi');

aunque tampoco afectaría.

Por otra parte, en la línea:

Código Delphi [-]
resp := IdHTTP.Post('http://www.ibpindex.com/ibpweb.asp?LAN=es', Stream);

la URL no es la del formulario sino la que corresponde a la propiedad action del formulario HTML (que es a donde se envían los datos y es el destino del POST), que sería

Código:
http://www.ibpindex.com/prebabel_e.asp
Por último, dado que prelabel.asp redirige a otra página (que es la que te devuelve los resultados), tu componente IdHTTP dbe tener habilitada la opción HandleRedirects.

Con esto debe funcionar.

// Saludos
Responder Con Cita
  #7  
Antiguo 26-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me ha dejado deprimido, todo me suena a tagalo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener el resultado de una consulta devric SQL 3 02-03-2010 06:01:17
Obtener resultado de una suma (SQL) radge OOP 7 19-08-2008 12:14:41
Rellenar filas hasta final pagina. jlalvarez Impresión 1 20-06-2007 17:17:43
obtener el resultado de un QRExpr thorv Impresión 2 14-02-2007 20:58:53
Rellenar campos sin FieldName en DbGrid kirvi OOP 9 24-08-2006 10:57:47


La franja horaria es GMT +2. Ahora son las 18:49:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi