Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-05-2006
Avatar de mazinger
mazinger mazinger is offline
Miembro
 
Registrado: jul 2004
Ubicación: Zamora
Posts: 85
Poder: 20
mazinger Va por buen camino
Enviar Java desde Delphi

Aunque en un hilo anterior:

http://clubdelphi.com/foros/showthread.php?t=31503

Ya preguntaba algo parecido, después de mucho investigar he llegado a la conclusión de que mi planteamiento tal vez estuviera equivocado.
Lo que realmente quiero es que mi programa Delphi interactúe de forma transparente con una página web que contiene comandos en Java, de manera que Delphi navegue automáticamente hasta la parte que el cliente necesita, sin que éste tenga que ir recorriendo interminables páginas web.
Esto que parece fácil en principio, no lo es tanto, pues el servidor obliga (o al menos eso creo) a ir siguiendo los pasos correspondientes sin saltarse ninguno, como si llevara un registro de sesión de manera que hay que ir recorriendo obligatoriamente todas las páginas hasta llegar a la que busco.
Para poder abrir alguna página concreta hay que pulsar algún botón que ejecuta un comando Java, por ejemplo:

Código:
botones[1] = "javascript:document.formulario.submit()";
Lo que yo quiero es que mi programa envíe ese comando para evitar que el usuario tenga que pulsar ese botón, y así llegar hasta la página que mostrará la información que requiere el cliente.

Espero haber sido algo más claro, y a ver si alguien me echa una mano, que es importante para mi proyecto
Gracias
__________________
Visita mi página (en construcción):

http://mazinger.wordpress.com/
Responder Con Cita
  #2  
Antiguo 11-05-2006
liadsoft liadsoft is offline
Miembro
 
Registrado: may 2006
Posts: 12
Poder: 0
liadsoft Va por buen camino
Idea

Bueno, cada ves que se presiona un botón en una página, creo que se ejecuta o se envía información a la página que se encuentra en el campo 'action' del formulario al que pertenece el botón. La información se envía de la siguiente forma:

'página en action'+?+componente1 = valor1 & componente2 = valor 2 & ...

Donde los componentes son los botones, la TextBox y eso. Esto en el caso que el comando sea GET, de ser POST, se envía todo esto a la página en action pero con el POST, en el cuer´po del mensage HTTP

Lo que puedes hacer es ver a qué página te envía el botón, bajarla y si existe otro botón ver a qué página envía este, y la última es la que le debes pasar el Browser.
Responder Con Cita
  #3  
Antiguo 11-05-2006
liadsoft liadsoft is offline
Miembro
 
Registrado: may 2006
Posts: 12
Poder: 0
liadsoft Va por buen camino
Lightbulb Java desde Delphi

Bueno, me parece que no te había entendido bien.
Lo que quieres es que el Delphi, ya con la página bajada, ejecute el comando java que se ejecuta al presionar el botón.

Si no me equivoco, esto lo puedes hacer sin enredarte con el java, dejando que un buscador, como el Internet Expliorer haga ese trabajo. En ese caso, lo que tines es que copiar el comando o la función java que tu quieres que el IE te ejecute, enviarle la página a él pero le agregas un bloque Script (que siempre se ejecuta cuando el IE llega a analizar la página hasta ahí '<script>' y en él pones el código que ejecuta el botón, creo que en ese caso el IE te va a ejecutar el código y él solito te va a acceder a la página que llama el botón.
Responder Con Cita
  #4  
Antiguo 11-05-2006
Avatar de mazinger
mazinger mazinger is offline
Miembro
 
Registrado: jul 2004
Ubicación: Zamora
Posts: 85
Poder: 20
mazinger Va por buen camino
Buf, pues no te llego a entender lo que me cuentas.
Yo utilizo el TWebBrowser, pero lo oculto para que sólo aparezca cuando he llegado a la página que quiero. No sé como el TWebBrowser puede enviar el comando Java. ¿Algún ejemplo?
Gracias por tu respuesta.
__________________
Visita mi página (en construcción):

http://mazinger.wordpress.com/
Responder Con Cita
  #5  
Antiguo 12-05-2006
liadsoft liadsoft is offline
Miembro
 
Registrado: may 2006
Posts: 12
Poder: 0
liadsoft Va por buen camino
Form.Submit

Bueno, te explicaré algo que seguramente ter va a ayudar.

el comando document.formularion.submit() lo que hace es que se ejecute la acción de un formulario que se halla en la página, es decir:

<form name="formulario" action='http://www.hola.com/hola.php'>

lo que tienes que hacer para llegar a la página que se habre después de presionar el botón es obtener la página que está en el campo action del formulario.

Si tienes duda de cómo obtener la página, pregunta.
Responder Con Cita
  #6  
Antiguo 12-05-2006
Avatar de mazinger
mazinger mazinger is offline
Miembro
 
Registrado: jul 2004
Ubicación: Zamora
Posts: 85
Poder: 20
mazinger Va por buen camino
LiadSoft, en primer lugar gracias por tus explicaciones, es un campo nuevo para mi, y estoy investigando como resolver esto.

El formulario ejecuta esto:

Código:
<form name="formulario" method="POST" action="IndexAction.do">
Pero si llamo directamente por código a la página IndexAction.do, me da error. Me dice que mi sesion no es válida. Si pulso el botón funciona perfectamente.
Tal vez la solución sea emular una pulsación del botón web a través de código desde Delphi, pero no sé como se puede hacer eso.

Te paso el código completo de la página para ver si te ayuda:
Archivos Adjuntos
Tipo de Archivo: zip LoginAction.zip (1,5 KB, 37 visitas)
__________________
Visita mi página (en construcción):

http://mazinger.wordpress.com/
Responder Con Cita
  #7  
Antiguo 12-05-2006
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,

Tal como te dice liadsoft, formulario.submit() (que por cierto, es código JavaScript, que nada tiene que ver con Java) lo que hace es mandar los datos del formulario a la url indicada.

Esto nunca va a ser equivalente a cargar dicha url directamente en el navegador pues justamente no estarías mandando los datos contenidos en el formulario.

El WebBrowser te permite enviar un POST como "dios manda". Revisa este hilo en donde se da la forma de hacerlo.

Nota que si quieres hacerlo transparente al usuario, entonces tú tienes que proveer los datos en el código delphi y hacer el POST. Tienes entonces que examinar el código HTML del formulario para ver cuáles son los nombres de los campos para saber qué es lo que tienes que mandar.

// Saludos
Responder Con Cita
  #8  
Antiguo 13-05-2006
Avatar de mazinger
mazinger mazinger is offline
Miembro
 
Registrado: jul 2004
Ubicación: Zamora
Posts: 85
Poder: 20
mazinger Va por buen camino
Gracias Román tengo que probar ese código que me pones.
Mientras tanto, investigando por mi cuenta (que soy nuevo en esto del JavaScript ) he encontrado una función que permite ejecutar código de cualquier página web.
Lo voy a poner a continuación para que la gente que se encuentre en situaciones similares tenga una ayuda creo que importante.

Código Delphi [-]
uses
  MSHTML;
  
procedure TForm1.CallFoo(S: string; I: Integer);
  { Calls JavaScript Foo() function }
var
  Doc: IHTMLDocument2;      // current HTML document
  HTMLWindow: IHTMLWindow2; // parent window of current HTML document
  JSFn: string;             // stores JavaScipt function call
begin
  // Get reference to current document
  Doc := WebBrowser1.Document as IHTMLDocument2;
  if not Assigned(Doc) then
    Exit;
  // Get parent window of current document
  HTMLWindow := Doc.parentWindow;
  if not Assigned(HTMLWindow) then
    Exit;
  // Run JavaScript
  try
    JSFn := Format('Foo("%s",%d)', [S, I]);  // build function call
    HTMLWindow.execScript(JSFn, 'JavaScript'); // execute function
  except
    // handle exception in case JavaScript fails to run
  end;
end;

Extraído de aquí, incluyendo explicación en inglés.

Ahora me queda averiguar cómo ejecutar código que no está incluido en la propia página web, sino en librerías de funciones .js que están en el servidor y que ejecuta desde algunas de esas páginas.

Seguiremos informando
__________________
Visita mi página (en construcción):

http://mazinger.wordpress.com/
Responder Con Cita
  #9  
Antiguo 13-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por mazinger
Ahora me queda averiguar cómo ejecutar código que no está incluido en la propia página web, sino en librerías de funciones .js que están en el servidor y que ejecuta desde algunas de esas páginas.
Bueno. Me llamó la atención y traté de comprobarlo yo mismo y, como era de suponer, también funciona. Quiere decirse que el código JavaScript que se incluye a partir de un archivo ".js" queda expuesto en el documento de la misma forma (al menos para lo que nos ocupa) que si estuviera "escrito" directamente en el mismo.

Adjunto una pequeña prueba.
Archivos Adjuntos
Tipo de Archivo: zip wbcallscript.zip (3,2 KB, 52 visitas)
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Enviar parametros desde Delphi a Storage Procedures en BD Firebird cuburu Conexión con bases de datos 12 18-01-2006 00:00:48
se puede enviar un email desde delphi? lazarous Varios 1 17-10-2005 15:01:12
enviar mail desde delphi 7 Diego Internet 2 07-06-2004 14:07:50
enviar un amail desde delphi 5 camambrini Internet 1 03-01-2004 16:52:06
como enviar un dataSet desde Delphi a Oracle?? Jaco Oracle 3 25-09-2003 17:19:25


La franja horaria es GMT +2. Ahora son las 11:45:59.


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