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 09-09-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Xml-rpc

Hola amig@s !

Llevo dos días completos buscando por todo internet algo acerca de cómo implementar XML-RPC con Delphi ... y evidentemente estoy ya desesperado y recurro a vosotros a través de este foro.

Necesito implementar una comunicación XML a traves de XML-RPC, ya que el sitio Web al que me voy a conectar ha desestimado la opción de SOAP.

Por más que busco en este foro, en Google, en todos los sitios, doy con librerias, con artículos, con hilos de este foro, etc, pero no consigo implementar nada de nada.

He intentado con TIdHTTP y POST, he intentado no sé cuantas otras opciones pero todas ellas me llevan a ningún sitio.

Además tengo que indicar que la página a la que me debo conectar es 'https//' por lo que además estoy haciendo pruebas con los componentes SSL de Indy 10.

Primero, alguien puede ayudarme y guiarme un poco hace el camino correcto ? Segundo, alguien sabe de algún sitio activo al día de hoy (que no sea https, sino http) en el cual se pudieran hacer algunas pruebas ?

Os estaré eternamente agradecidos !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 09-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.099
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola gluglu, lo único que sé de SML-RPC es que es la versión original, limpia y primigenia de lo que es hoy SOAP (después de meter mano microsoft).

Aparte de wikipedia y el sitio oficial, que seguro que los has visto, he encontrado este proyecto en sourceforge, que no sé si te servirá.
Ojalá te sirva.

http://sourceforge.net/projects/delphixml-rpc/
Responder Con Cita
  #3  
Antiguo 09-09-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Hola Casimiro !

Sí, he consultado ya esa página y otras tantísimas más.

El proyecto Sourceforge está obsoleto y la última actualización es del 2003. Encontré varias páginas que indican 'en cierta manera' como se podría 'a lo mejor' adaptar a las nuevas versiones de delphi (en mi caso D2007).

He encontrado otras páginas, de las cuales destaco esta :
http://xenno-delphi.blogspot.com/200...i-xml-rpc.html

Tampoco he llegado a buen fin porque 'no me entero' ....

Al momento de escribir esta contestación, me he bajado la librería RealThinClient y estoy haciendo pruebas.

Respecto de esta libreria dos asuntos : el 7 Sept 2011 publicaron una versión ( 4.35) de prueba, no comercial, pero totalmente operativa (sin fuentes). No puedo instalarla porque da error.

Encontré otra versión anterior (2.74) de la misma librería en Torry's. He bajado e instalado esa versión y al momento de ahora consigo conectarme con ciertas páginas que ofrecen servicios XML-RPC, y que se listan en la propia página del proyecto.

Al menos ahora, con los componentes de RTC, consigo hacer las conexiones y que cuanto menos me devuelva un código de error. Logro mandar información, leer información y logro ver el error que me dá.

Por otro lado, esa implementación NO me está dando resultados con la página a la que realmente deseo acceder, pero ese sería un asunto diferente, ya que estoy en contacto directo con el proveedor de servicios y estamos entre los dos intentando darle una solución ya que el no conoce Delphi.

Al momento de ahora, y de hoy, se ha ido de fin de semana y hasta el lunes no vuelve, por lo que no puedo consultar realmente por qué no me funciona, lo que ahora me funciona con ciertos servicios de por ahí, con su página.

Hasta ahí he llegado por lo menos !

Ahora bien, he intentado implementar esa prueba que acabo de hacer y que me 'funciona' con los componentes RTC, a través de TIdHTTP, ya que hay muchos comentarios en estos foros de gente que ha hecho conexiones XML-Rpc con los componentes de Indy.

También parece ser que están muy puestos en estos asuntos los compañeros dec y seoane, y han dado otras soluciones por estos foros. Pero como indico, por ese lado no consigo avanzar.

En teoría, XML-Rpc es de lo más simple, pero en mi caso no logro dar con la tecla correcta por lo menos en lo que a componentes directos de Delphi (incluyo Indy en esa definición), y no quisiera depender directamente de la libreria RTC. Al menos he conseguido ya una determinada 'solución' con esos componentes, aunque sea una versión anterior.

__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 09-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.099
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No tengo ni idea, nunca lo he usado

Puede que Dec o Seoane puedan ayudarte, Yo les enviaría un mensaje, por preguntar no pierdes nada.
Por cierto, la web de seoane es esta.

Siento no poder ayudar con esto, pero escapa casi por completo de mis conocimientos
Responder Con Cita
  #5  
Antiguo 09-09-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Por si a alguien le sirve alguna vez de ayuda ....

He encontrado esto : http://code.google.com/p/xmlrpc-test/ y he pinchado en esa página en el link de la Online Demo. Ahí funciona todo lo que pretendo, pero claro .... no es Delphi !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 10-09-2011
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.918
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
xml-rpc no es un estandar fijo, es mas bien una idea de como se puede hacer. Osea, no existe un modelo preciso de como operarlo, al contrario de SOAP. Ademas, es mas popular entre los lenguajes script como python, ruby & php.

Con todo, xml-rpc es solo una capa SOBRE http. Hacer XML-RPC es cuestion de hacer HTTP, y luego parsear los XML. No es tan dificil como suena, y se puede hacer una implementacion cutre en un par de horas...

http://mail-archives.apache.org/mod_...l.gmail.com%3E

Cita:
I don't believe we have explicitly tested Synapse with any XML-RPC
clients or services. However, XML-RPC is (as far as Synapse is
concerned) simply a POST of XML content to a URL. So Synapse will
treat this as a POX (plain old XML request). So the answer is yes.
Sin embargo, mira:

http://wiki.freepascal.org/Web_Service_Toolkit

De hacerlo a mano, lo haria con synapse. Es mucho mas facil con una libreria que NO es visual. Es el tipo de tareas donde RAD es mala idea.

Tambien puedes empezar a expandir tus horizontes y aprovecharte de tanto codigo que hay en *otros* lenguajes. A veces, simplemente lo mejor esta en otro lado .

Varias veces donde no he encontrado una solucion en X lenguaje, me pregunto en que lenguaje debe existir la solucion mas elegante, miro alli como lo hacen y luego me regreso a casa.

Por ejemplo, este es un cliente XML-RPC en python:

http://docs.python.org/library/xmlrpclib.html

Y codigo:

http://hg.python.org/cpython/file/2.7/Lib/xmlrpclib.py

P.D. Tambien podrias importar librerias de python usando http://mmm-experts.com/products.aspx?productid=3. Funciona muy bien, si no te importar desplegar la dll de python + archivos .py, o puedes encapsular el codigo en una linea de comandos e invocarlo en el background.


O sea, opciones es lo que hay!
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 11-09-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Bueno ....

Quiero escribir estas líneas adicionales para daros las gracias a todos los que habeis intervenido.

Finalmente conseguí enlazar con la librería RTC. No pongo el código porque al ser una librería específica no creo que tenga mucho sentido.

No contento con ello, me dije que tenía que ser posible hacer lo mismo con el componente TIdHTTP de las Indy que vienen con el propio Delphi.

Pues efectivamente, se puede y es INMEDIATO. Lo único que pasa, como siempre, es que hay que saber las dos o tres líneas que hay que poner para que funcione.

He hecho pruebas tanto con servidos http como con https y en el formulario de prueba tengo colocado el componente SSL de las Indy enlazado con el IdHTTP y en ambos casos funciona correctamente. Es decir, para página 'no SSL' no hace falta quitar expresamente el componente SSL.

El componente TIdHTTP lo coloco en el formulario, sin más, sin cambiar ninguna opción ni propiedad.

El misterio estaba en que existen varios métodos de hacer el Post con TIdHTTP. El que ahora mismo me está funcionando es el que hace uso de un StringStream, para que al parecer la conversión del código XML se realice adecuadamente.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  XMLRequest  : TStrings;
  XMLResponse : string;
  Strm        : TStringStream;
begin
 
  XMLRequest  := TStringList.Create;
  XMLRequest.Add('$?xml version="1.0"?$');
  XMLRequest.Add('$methodCall$');
  XMLRequest.Add('$methodName$procedure_al_que_quiero_llamar$/methodName$');
  XMLRequest.Add('$params$');
  XMLRequest.Add('$param$');
  XMLRequest.Add('$value$$string$valor$/string$$/value$');
  XMLRequest.Add('$/param$');
  XMLRequest.Add('$/params$');
  XMLRequest.Add('$/methodCall$');
 
  Strm := TStringStream.Create(XMLRequest.Text);
  XMLResponse := IdHTTP1.Post('https://nombre_servidor.com', Strm);

  XMLRequest.Free;
  Strm.Free;
 
end;

... y eso es todo.

... menudas vueltas que le tuve que dar !

Edito : Tengo que cambiar las etiquetas '<' y '>' de las líneas de código XML para que se vea algo en este hilo.
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 11-09-2011 a las 20:17:03.
Responder Con Cita
  #8  
Antiguo 11-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.099
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me alegra que lo hayas conseguido

Estas cosas pasan a menudo, te tiras varios días o semanas para hacer algo y cuando lo acabas te dice el jefe: "¿y tanto tiempo para eso?, sin son 3 líneas".
Te dan ganas de mandarlo a... pero te aguantas

El problema es que no podemos saberlo TODO, hay que investigar, hacer pruebas, preguntar, etc. hasta encontrar el resultado.

Esta vez ha sido otro logro de tu parte, enhorabuena, y ahora a sacarle provecho
Responder Con Cita
  #9  
Antiguo 25-01-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Buenas...
stoy intentando conectarme a una aplicación y no consigo entender del todo cómo conectarme.

Podrías indicarme cómo hacer lo siguiente?
llamar a la función "login" con los siguientes parámetros nombrebbdd, usuario, password

llamar a la función "execute" con los parámetros nombrebbdd, idconexion, password, parametro1,parametro2, parametro3

Sería algo así ?
Código Delphi [-]
  XMLRequest.Add('$methodName$login$/methodName$');
  XMLRequest.Add('$params$');
  XMLRequest.Add('$param$');
  XMLRequest.Add('$value$$string$bbdd$/string$$/value$');
  XMLRequest.Add('$/param$');
  XMLRequest.Add('$/params$');

  XMLRequest.Add('$params$');
  XMLRequest.Add('$param$');
  XMLRequest.Add('$value$$string$usuario$/string$$/value$');
  XMLRequest.Add('$/param$');
  XMLRequest.Add('$/params$');

  XMLRequest.Add('$params$');
  XMLRequest.Add('$param$');
  XMLRequest.Add('$value$$string$password$/string$$/value$');
  XMLRequest.Add('$/param$');
  XMLRequest.Add('$/params$');

  XMLRequest.Add('$/methodCall$');

  Strm := TStringStream.Create(XMLRequest.Text);
  XMLResponse := IdHTTP1.Post('https://nombre_servidor.com', Strm);

Gracias de antemano y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
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


La franja horaria es GMT +2. Ahora son las 19:39:13.


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