Jump to content


Photo

Crear y consumir un WebService con Delphi (Parte I, II y III)


  • Please log in to reply
41 replies to this topic

#21 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 07 January 2009 - 08:12 PM

Ah pues que bien, gracias por el aporte, esto redondea el hilo (y)

Salud OS
  • 0

#22 scasab

scasab

    Advanced Member

  • Miembros
  • PipPipPip
  • 66 posts

Posted 14 October 2009 - 10:04 AM

Hola... que buen totorial...

Estoy dudoso del rendimiento basado en web services o .net remoting, estamos evaluando una aplicacion local que no requiere acceso internet que tiene problemas de rendimiento en el consumo de webservices y estamos considerando en migrar a .net remoting. En los foros de Microsoft hablan pros y contras... Alguien ha tenido la experiencia de que funciona más rápido?

Saludos.

  • 0

#23 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 24 January 2012 - 03:20 PM

Tócate las narices con Microsoft.

Llevo toda la tarde peleándome para conseguir poner en marcha un WebService elemental (solo he definido la estructura de llamadas, aún no he hecho ninguna implementación).

En mi equipo de desarrollo y en el servidor tengo Internet Information Server 7 (es la instalación por defecto en Windows 7 y Windows 2008 Server), y en él no resulta tan fácil poner a ejecutar un CGI. Además de crear el directorio virtual tienes que entrar en dos pantallas de configuración más para habilitar la ejecución de tu CGI.

Además de crear el directorio virtual, te tienes que posicionar en la raíz del Administrador de Internet Information Services (IIS), en el nodo del Equipo o Servidor, y entrar en las opciones de "Restricciones de ISAPI y CGI", y en la de "Asignaciones de Controlador".

Dentro de las "Restricciones de "ISAPI y CGI" tienes que agregar tu ejecutable o DLL a la lista de de extensiones ISAPI/CGI permitidas en el servidor.

Dentro de las "Asignaciones de Controlador" tienes que habilitar los mapeadores "CGI-exe" y/o "ISAPI-dll".

Me parece alucinante que la dichosa Microsoft ponga tan dispersas las opciones para configurar la ejecución de un CGI, esto tendría que ser mucho más fácil y no obligarte a pasarte horas navegando por pantallas de configuración e indagando la red.  :(  :(

Espero que estas anotaciones sirvan de ayuda para que otros no tengan que perder tanto tiempo como me ha ocurrido a mi.

Saludos.
  • 0

#24 felipe

felipe

    Advanced Member

  • Administrador
  • 3283 posts
  • LocationColombia

Posted 24 January 2012 - 04:09 PM

Nada como en IIS6, mi lucha con el 7 fué en vano, no logré que ejecutara la dll por más vueltas que diera al asunto, siempre terminaba era descargando el archivo :(
Gracias por los consejos.


Saludos!
  • 0

#25 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 24 January 2012 - 04:51 PM

Si tienes sus cosas raras el IIS7, yo logre hacerlo funcionar en Vista y debe ser lo mismo en Win7, por ahí hay un tutorial de nuestro amigo genyus00 que habla sobre esa versión de IIS

COMO CONFIGURA IIS 7 o 7.5

Saludos
  • 0

#26 javsolis3

javsolis3

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1380 posts
  • LocationPanama

Posted 27 January 2012 - 06:19 AM

Recordando los viejos tiempos Egostar tremendo aporte jejejjeje.  (y)
  • 0

#27 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 01 June 2012 - 02:23 AM

Nada como en IIS6, mi lucha con el 7 fué en vano, no logré que ejecutara la dll por más vueltas que diera al asunto, siempre terminaba era descargando el archivo :(
Gracias por los consejos.


Saludos!


Pues yo aún no he conseguido que funcione un WebService en IIS6, siempre que intento acceder me responde : "Archivo Inexistente".  :(  :(

Con lo bien que funciona intercambiar información mediante archivos planos en un Servidor FTP, la verdad es que no entiendo esta mania de los gerentes a que utilicemos WebServices. A mi cada vez que me obligan a tocarlos sudo tinta hasta que funciona, falla por todos los lados (reciben una fecha +2 horas respecto a lo que yo envío, la parte servidor no se pone en marcha, hay certificados de seguridad que no dejan acceder al servidor, etc. ... .... ...).

Saludos.
  • 0

#28 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 01 June 2012 - 07:39 AM


Nada como en IIS6, mi lucha con el 7 fué en vano, no logré que ejecutara la dll por más vueltas que diera al asunto, siempre terminaba era descargando el archivo :(
Gracias por los consejos.


Saludos!


Pues yo aún no he conseguido que funcione un WebService en IIS6, siempre que intento acceder me responde : "Archivo Inexistente".  :(  :(

Con lo bien que funciona intercambiar información mediante archivos planos en un Servidor FTP, la verdad es que no entiendo esta mania de los gerentes a que utilicemos WebServices. A mi cada vez que me obligan a tocarlos sudo tinta hasta que funciona, falla por todos los lados (reciben una fecha +2 horas respecto a lo que yo envío, la parte servidor no se pone en marcha, hay certificados de seguridad que no dejan acceder al servidor, etc. ... .... ...).

Saludos.


Que raro amigo Marc, poner en marcha webservices con IIS6 es de lo más fácil, todo se complica con el IIS7 pero no he tenido problemas para ejecutar CGI's e ISAPI's

Me daré un tiempecillo para actualizar estos tutoriales y hacer algo interesante, algo no tan básico. Se me antoja desarrollar algo que se pueda hacer desde la versión más básica de Delphi y con ejemplos de consumo con WSDL Importer, CURL, C# y si alguien me ayuda con PHP, Netbeans, Java o demás yerbas sería genial :).

Saludos
  • 0

#29 moscomx

moscomx

    Newbie

  • Miembros
  • Pip
  • 6 posts

Posted 06 August 2018 - 10:50 PM

:( llegue tarde. La parte de consumir el webservices ya no se ven las imágenes
  • 0

#30 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 07 August 2018 - 07:36 AM

:( llegue tarde. La parte de consumir el webservices ya no se ven las imágenes

 

Hola moscomx, bienvenido a DelphiAccess.

 

Ese es un problema añejo de una de las mudanzas que hemos tenido y debo arreglarlo, espero darme un tiempo este fin de semana. Mientras tanto si tienes alguna pregunta no dudes en publicarla y con gusto te ayudaremos. (y)

Saludos


  • 0

#31 moscomx

moscomx

    Newbie

  • Miembros
  • Pip
  • 6 posts

Posted 07 August 2018 - 09:05 PM

Hola moscomx, bienvenido a DelphiAccess.

Ese es un problema añejo de una de las mudanzas que hemos tenido y debo arreglarlo, espero darme un tiempo este fin de semana. Mientras tanto si tienes alguna pregunta no dudes en publicarla y con gusto te ayudaremos. (y)

Saludos


Muchas gracias egostar la verdad soy muy novato respecto al uso de webservices pero me surgió la necesidad de consumir uno, pero aun no comprendo como implementarlo y como hacer las llamadas a sus funciones y al fin creí encontrar como hacerle y justo en lo que necesito no aparecen las imágenes :(. He estado buscando en varias post y videos pero aun no logro captar la idea del cliente.
  • 0

#32 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 08 August 2018 - 08:07 AM

Muchas gracias egostar la verdad soy muy novato respecto al uso de webservices pero me surgió la necesidad de consumir uno, pero aun no comprendo como implementarlo y como hacer las llamadas a sus funciones y al fin creí encontrar como hacerle y justo en lo que necesito no aparecen las imágenes :(. He estado buscando en varias post y videos pero aun no logro captar la idea del cliente.


Entiendo, intentaré subir las imagenes a la brevedad.

 

Saludos


  • 0

#33 axesys

axesys

    Advanced Member

  • Moderadores
  • PipPipPip
  • 640 posts
  • LocationLos Mochis

Posted 11 August 2018 - 09:12 AM

Con Delphi CE y los componentes REST Dataware es bien fácil.

 

Aquí te dejo un ejemplo que hice en el grupo de facebook Delphi Solidario.

 

https://www.facebook...32380613448772/

 

Saludos


  • 0

#34 moscomx

moscomx

    Newbie

  • Miembros
  • Pip
  • 6 posts

Posted 12 August 2018 - 11:31 PM

Con Delphi CE y los componentes REST Dataware es bien fácil.

Aquí te dejo un ejemplo que hice en el grupo de facebook Delphi Solidario.

https://www.facebook...32380613448772/

Saludos


Gracias por la información. Se que me falto dar detalles de mi necesidad. Requiero usar delphi 2007 debido un proyecto existente y en el cual requiero incluir el proceso para el envío y recepción de información del webservice. Mi duda es ¿ese ejemplo con delphi ce funcionaria en delphi 2007?
  • 0

#35 axesys

axesys

    Advanced Member

  • Moderadores
  • PipPipPip
  • 640 posts
  • LocationLos Mochis

Posted 13 August 2018 - 02:29 PM

Pues los componentes funcionan desde Delphi 6
  • 0

#36 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 14 August 2018 - 06:55 AM

Con Delphi CE y los componentes REST Dataware es bien fácil.

 

Aquí te dejo un ejemplo que hice en el grupo de facebook Delphi Solidario.

 

https://www.facebook...32380613448772/

 

Saludos

 

Saludos.

 

¿Cuál sería la diferencia entre esta suite de componentes y las que trae Delphi Berlín?

 

Ando buscando implementar algo como un webservices y no sé por donde comenzar. Tengo en mente los componentes que trae TMS Business Subscription pero para un futuro con miras a expandir la aplicación que estoy desarrollando ene estos momentos.

 

Quiero iniciarme en este "mundo" de los webservices y poder luego migrarme a los TMS.

 

Gracias!


  • 0

#37 tiquinho

tiquinho

    Member

  • Miembros
  • PipPip
  • 36 posts

Posted 14 February 2020 - 03:00 PM

Hola a todos

 

He tratado de consumir un simple servicio SOAP en el que se recibe un parametro y se devuelve el mismo parametro

 

pero me sale el siguiente error

 

HTTPBC-E00798: Error de normalización del mensaje

 

Trabajo con delphi7 y win8

 

Este es el servicio que estoy consumiendo (No lo hice yo, me lo pasaron jejeje)


xml
  1. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="holamundoWSDL" targetNamespace="http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL">
  2. <types> </types>
  3. <message name="holamundoWSDLOperationResponse">
  4. <part name="salida" type="xsd:string"> </part>
  5. </message>
  6. <message name="holamundoWSDLOperationRequest">
  7. <part name="entrada" type="xsd:string"> </part>
  8. </message>
  9. <portType name="holamundoWSDLPortType">
  10. <operation name="holamundoWSDLOperation" parameterOrder="entrada">
  11. <input name="input1" message="tns:holamundoWSDLOperationRequest"> </input>
  12. <output name="output1" message="tns:holamundoWSDLOperationResponse"> </output>
  13. </operation>
  14. </portType>
  15. <binding name="holamundoWSDLBinding" type="tns:holamundoWSDLPortType">
  16. <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  17. <operation name="holamundoWSDLOperation">
  18. <soap:operation/>
  19. <input name="input1">
  20. <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL"/>
  21. </input>
  22. <output name="output1">
  23. <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL"/>
  24. </output>
  25. </operation>
  26. </binding>
  27. <service name="holamundoWSDLService">
  28. <port name="holamundoWSDLPort" binding="tns:holamundoWSDLBinding">
  29. <soap:address location="http://172.16.1.212:9080/holamundoWSDLService/holamundoWSDLPort"/>
  30. </port>
  31. </service>
  32. <plnk:partnerLinkType name="holamundoWSDL">
  33. <!--
  34. A partner link type is automatically generated when a new port type is added. Partner link types are used by BPEL processes.
  35. In a BPEL process, a partner link represents the interaction between the BPEL process and a partner service. Each partner link is associated with a partner link type.
  36. A partner link type characterizes the conversational relationship between two services. The partner link type can have one or two roles.
  37. -->
  38. <plnk:role name="holamundoWSDLPortTypeRole" portType="tns:holamundoWSDLPortType"/>
  39. </plnk:partnerLinkType>
  40. </definitions>

Aqui esta el WSDPort que se crea


delphi
  1. // ************************************************************************ //
  2. // The types declared in this file were generated from data read from the
  3. // WSDL File described below:
  4. // WSDL : http://172.16.1.212:9080/holamundoWSDLService/holamundoWSDLPort?wsdl
  5. // Encoding : UTF-8
  6. // Version : 1.0
  7. // (14/02/2020 3:19:30 p. m. - 1.33.2.5)
  8. // ************************************************************************ //
  9.  
  10. unit holamundoWSDLPort;
  11.  
  12. interface
  13.  
  14. uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
  15.  
  16. type
  17.  
  18. // ************************************************************************ //
  19. // The following types, referred to in the WSDL document are not being represented
  20. // in this file. They are either aliases[@] of other types represented or were referred
  21. // to but never[!] declared in the document. The types from the latter category
  22. // typically map to predefined/known XML or Borland types; however, they could also
  23. // indicate incorrect WSDL documents that failed to declare or import a schema type.
  24. // ************************************************************************ //
  25. // !:string - "http://www.w3.org/2001/XMLSchema"
  26.  
  27.  
  28. // ************************************************************************ //
  29. // Namespace : http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL
  30. // transport : http://schemas.xmlsoap.org/soap/http
  31. // style : rpc
  32. // binding : holamundoWSDLBinding
  33. // service : holamundoWSDLService
  34. // port : holamundoWSDLPort
  35. // URL : http://172.16.1.xxx:xxxx/holamundoWSDLService/holamundoWSDLPort
  36. // ************************************************************************ //
  37. holamundoWSDLPortType = interface(IInvokable)
  38. ['{729E3E5A-A0A6-8FB5-0C36-DF81F98A9B89}']
  39. function holamundoWSDLOperation(const entrada: WideString): WideString; stdcall;
  40. end;
  41.  
  42. function GetholamundoWSDLPortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): holamundoWSDLPortType;
  43.  
  44.  
  45. implementation
  46.  
  47. function GetholamundoWSDLPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): holamundoWSDLPortType;
  48. const
  49. defWSDL = 'http://172.16.1.xxx:xxxx/holamundoWSDLService/holamundoWSDLPort?wsdl';
  50. defURL = 'http://172.16.1.xxx:xxxx/holamundoWSDLService/holamundoWSDLPort';
  51. defSvc = 'holamundoWSDLService';
  52. defPrt = 'holamundoWSDLPort';
  53. var
  54. RIO: THTTPRIO;
  55. begin
  56. Result := nil;
  57. if (Addr = '') then
  58. begin
  59. if UseWSDL then
  60. Addr := defWSDL
  61. else
  62. Addr := defURL;
  63. end;
  64. if HTTPRIO = nil then
  65. RIO := THTTPRIO.Create(nil)
  66. else
  67. RIO := HTTPRIO;
  68. try
  69. Result := (RIO as holamundoWSDLPortType);
  70. if UseWSDL then
  71. begin
  72. RIO.WSDLLocation := Addr;
  73. RIO.Service := defSvc;
  74. RIO.Port := defPrt;
  75. end else
  76. RIO.URL := Addr;
  77. finally
  78. if (Result = nil) and (HTTPRIO = nil) then
  79. RIO.Free;
  80. end;
  81. end;
  82.  
  83.  
  84. initialization
  85. InvRegistry.RegisterInterface(TypeInfo(holamundoWSDLPortType), 'http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL', 'UTF-8');
  86. InvRegistry.RegisterDefaultSOAPAction(TypeInfo(holamundoWSDLPortType), '');
  87. InvRegistry.RegisterInvokeOptions(TypeInfo(holamundoWSDLPortType), ioLiteral);
  88.  
  89. end.

y aqui lo llamo


delphi
  1. unit Formulario1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs,holamundoWSDLPort, StdCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Button1: TButton;
  12. Label1: TLabel;
  13. procedure Button1Click(Sender: TObject);
  14. private
  15. { Private declarations }
  16. public
  17. { Public declarations }
  18. end;
  19.  
  20. var
  21. Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. {$R *.dfm}
  26.  
  27. procedure TForm1.Button1Click(Sender: TObject);
  28. begin
  29. Label1.Caption := GetholamundoWSDLPortType().holamundoWSDLOperation('1');
  30. end;
  31.  
  32. end.

No se que estoy haciendo mal o q me falta

 

garcias

 


  • 0

#38 tiquinho

tiquinho

    Member

  • Miembros
  • PipPip
  • 36 posts

Posted 18 February 2020 - 04:16 PM

Solucione el problema comentando la lines 87 del archivo WSDPort

 

 

Buscando en la web, encontr un vídeo en youtube donde explica la configuración y todo el servicio,e sta en protugues, pero me ayudo mucho.


php
  1. https://www.youtube.com/watch?v=OUGO1aEznRE

otro que me ayudo después del primero, ya que sin las configuracioens del primer vídeo no podia realizar el segundo


php
  1. https://www.youtube.com/watch?v=-q-vc99w7-s

 


  • 1

#39 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 566 posts
  • LocationEspaña

Posted 19 February 2020 - 12:29 AM

Muchas gracias por compartir la solución

 

Un saludo (y) 


  • 0

#40 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 19 February 2020 - 09:41 AM

 

Solucione el problema comentando la lines 87 del archivo WSDPort

 

 

Buscando en la web, encontr un vídeo en youtube donde explica la configuración y todo el servicio,e sta en protugues, pero me ayudo mucho.


php
  1. https://www.youtube.com/watch?v=OUGO1aEznRE

otro que me ayudo después del primero, ya que sin las configuracioens del primer vídeo no podia realizar el segundo


php
  1. https://www.youtube.com/watch?v=-q-vc99w7-s

 

Que bueno que se ha solucionado, gracias por compartir.

 

 

Nota: Lamento que las imágenes no se vean y que no las tenga para subirlas de huevo, tendré que rehacer el tutorial.

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.