![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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"> <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"> </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> </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"> </td> </tr> <tr> <td valign="top"> </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> 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:
y con otro como este:
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.
__________________
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. |
#2
|
||||
|
||||
Cita:
Cita:
|
#3
|
||||
|
||||
Ja, ja, perdón. Sí funciona el archivo ejemplo.
// Saludos |
#4
|
||||
|
||||
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)
__________________
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. |
#5
|
||||
|
||||
Je, je. El problema no era el zip, el problema era que había que extraerlo del zip antes de mandarlo al IBP
![]() // Saludos |
#6
|
||||
|
||||
Hola Germán, creo que ya está.
En el primer código que pones sobraría la línea
aunque tampoco afectaría. Por otra parte, en la línea:
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 Con esto debe funcionar. // Saludos |
#7
|
||||
|
||||
Me ha dejado deprimido, todo me suena a tagalo
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
||||
|
||||
En realidad no es complicado. Un formulario HTML no es más que un medio para recabar información que se manda al servidor. Dicha información debe ser procesada por algún script en el servidor. Tal script es el que se especifica en el parámetro action del formulario:
Código:
<form action="prebabel_e.asp" method="post" enctype="multipart/form-data"> La mayor parte de las veces, el script en el servidor, una vez que procesa los datos, envía al cliente (el que envia los datos) un mensaje de redirección indicando qué página debe solicitar para mostrar el resultado. La recepción de dicho mensaje y la petición de tal página, lo hace en automático el navegador. En el caso del IdHTTP es lo mismo siempre y cuando especifiquemos la opción HandleRedirects. // Saludos |
#9
|
||||
|
||||
Explicado así parece sencillo
![]() Lo que no entiendo bien es qué hace el programa delphi, en qué interviene ahí.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Pues, digamos que tienes una aplicación de escritorio en la que quieres integrar el análisis del índice IBP (cualquier cosa que esto sea) pero no dispones del código delphi necesario. Entonces puedes usar el IdHTTP para acceder al sitio que provee el análisis y así reportarlo en tu propia aplicación.
Es como lo que alguna vez hice con el traductor de Google: integrarlo a una aplicación de escritorio mediante el uso de IdHTTP. // Saludos |
#11
|
||||
|
||||
Entonces eso quiere decir que desde un .exe se puede enviar/recibir datos de/a una página web. Qué curioso.
No pensé que fuese "tan fácil".
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#12
|
|||
|
|||
Interesante.
¿Este mismo método serviría para hacer las típicas altas, bajas, modificaciones y consultas en una base de datos a la que no hay acceso directo por ip? (Aplicación de escritorio -> PHP -> MySQL) |
#13
|
||||
|
||||
Cita:
Lo haces así y parece sencillo. ![]() Lo del parámetro más o menos lo imaginaba; No tenía mucho sentido ahí, pero supongo que quedó de las pruebas. De lo de la página web marcada en la Action no tenía ni idea. Una cosa más a apuntar. Cita:
Funciona perfecto. Cita:
Gracias.
__________________
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. |
#14
|
||||
|
||||
Cita:
// Saludos |
#15
|
|||
|
|||
Yo tengo un problema parecido con la página del Ministerio de Educación para buscar libros.
quiero introducir el ISBN y que lo busque y obtener la respuesta. He mirado y remirado el codigo fuente de la página, pero no consigo que me funcione. Mando como parámetros params.cisbnExt y como valor un ISBN pero no se que mas debo de enviar. He probado con el componente TidHttp y sin el. no me deja citar la página pero buscando en google ISBN escogiendo la página mcu.es |
#16
|
|||
|
|||
Este es el texto de la página, yo creo que la parte que interesa es la siguiente:
Código:
<div> <form id="libroBusquedaSimpleForm" name="libroBusquedaSimpleForm" method="post" action="/webISBN/tituloSimpleDispatch.do"> <input type="hidden" name="params.forzaQuery" value="N" id="params.forzaQuery" /> <!--<p class="formNota">Campos obligatorios marcados con <span>*</span></p>--> <fieldset> <legend>Búsqueda sencilla de títulos</legend> <p class="floatDerecha"> <a href="/libro/CE/AgenciaISBN/webISBN/AyudaBusquedaSimple.html" tabindex="101" title="Ayuda sobre el formulario">Ayuda</a> </p> <p class="floatDerechaConMargen"> <a href="/webISBN/cargarLibroBusquedaAvanzada.do?cache=init&prev_layout=busquedaisbn&layout=busquedaisbn&language=es" tabindex="102" title="Búsqueda avanzada de títulos">Búsqueda avanzada de títulos</a> </p> <div> <div class="camposCheck"> <p><strong class="camposEnLineaTitulo">Realizar búsqueda por:</strong></p> <label for="params.cdispo"><input type="radio" name="params.cdispo" tabindex="103" value="A" checked="checked" id="params.cdispo1" />ambos</label> <label for="params.cdispo"><input type="radio" name="params.cdispo" tabindex="104" value="D" id="params.cdispo2" />disponibles</label> <label for="params.cdispo"><input type="radio" name="params.cdispo" tabindex="105" value="N" id="params.cdispo3" />no disponibles</label> </div> <div> <label for="params.cisbnExt">ISBN</label><input type="text" name="params.cisbnExt" tabindex="106" value="" id="params.cisbnExt" /> </div> <div> <label for="params.liConceptosExt[0].texto">Texto de búsqueda</label><input type="text" name="params.liConceptosExt[0].texto" size="50" tabindex="107" value="" id="params.liConceptosExt[0].texto" /> </div> <div> <label for="params.orderByFormId">Ordenar por</label><select name="params.orderByFormId" tabindex="108" id="params.orderByFormId"><option value="3">AUTOR</option> <option value="2">FECHA EDICIÓN</option> <option value="0">NINGUNO</option> <option value="1" selected="selected">TITULO</option></select> </div> </div> </fieldset> <div id="botones"> <input type="submit" name="action" tabindex="109" value="Buscar" /> <input type="submit" name="action" tabindex="110" value="Limpiar" /> </div> <input type="hidden" name="language" value="es"/><input type="hidden" name="prev_layout" value="busquedaisbn"/><input type="hidden" name="layout" value="busquedaisbn"/></form> </div> </div></div> |
#17
|
|||
|
|||
Sigo sin conseguir hacer la consulta, solo he conseguido escribir directamente desde delphi en la página y que haga el submit, pero quiero que la consulta sea transparente.
|
#18
|
||||
|
||||
Cita:
Saludos |
#19
|
|||
|
|||
http://www.mcu.es/webISBN/tituloSimp...bn&language=es
esta es la url, mi intención es meter el ISBN y que ejecute la busqueda. Gracias de antemano. |
#20
|
|||
|
|||
Explico la intención de la aplicación que quiero hacer. Tengo una aplicación en delphi para gestionar una biblioteca, pero para evitar tener que introducir el titulo del libro y el autor, mi intención es que leyendo el isbn con un lector de codigo de barras, vaya a la página del ministerio de cultura y busque, después desde la propia aplicación delphi lea el resultado de la busqueda de la propia página web y lo introduzca en la base de datos. Mi problema es que he probado a enviarle los datos a la página pero no lo consigo. La página esta php, aunque tiene algo de javascript. la pagina es http://www.mcu.es/webISBN/tituloSimp...bn&language=es, intento interceptar los campos y hacer un submit, pero no se muy bien como se hace o si se puede hacer.
Muchas gracias de antemano . |
![]() |
|
|
![]() |
||||
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 |
![]() |
|