Crear y consumir un WebService con Delphi (Parte I, II y III)
#21
Escrito 07 enero 2009 - 08:12
Salud OS
#22
Escrito 14 octubre 2009 - 10:04
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.
#23
Escrito 24 enero 2012 - 03:20
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.
#24
Escrito 24 enero 2012 - 04:09
Gracias por los consejos.
Saludos!
#25
Escrito 24 enero 2012 - 04:51
COMO CONFIGURA IIS 7 o 7.5
Saludos
#26
Escrito 27 enero 2012 - 06:19
#27
Escrito 01 junio 2012 - 02:23
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.
#28
Escrito 01 junio 2012 - 07:39
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
#29
Escrito 06 agosto 2018 - 10:50
#30
Escrito 07 agosto 2018 - 07:36
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.
Saludos
#31
Escrito 07 agosto 2018 - 09:05
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.
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.
#32
Escrito 08 agosto 2018 - 08:07
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
#33
Escrito 11 agosto 2018 - 09:12
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
#34
Escrito 12 agosto 2018 - 11:31
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?
#35
Escrito 13 agosto 2018 - 02:29
#36
Escrito 14 agosto 2018 - 06:55
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!
#37
Escrito 14 febrero 2020 - 03:00
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)
<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"> <types> </types> <message name="holamundoWSDLOperationResponse"> <part name="salida" type="xsd:string"> </part> </message> <message name="holamundoWSDLOperationRequest"> <part name="entrada" type="xsd:string"> </part> </message> <portType name="holamundoWSDLPortType"> <operation name="holamundoWSDLOperation" parameterOrder="entrada"> <input name="input1" message="tns:holamundoWSDLOperationRequest"> </input> <output name="output1" message="tns:holamundoWSDLOperationResponse"> </output> </operation> </portType> <binding name="holamundoWSDLBinding" type="tns:holamundoWSDLPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="holamundoWSDLOperation"> <soap:operation/> <input name="input1"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL"/> </input> <output name="output1"> <soap:body use="literal" namespace="http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL"/> </output> </operation> </binding> <service name="holamundoWSDLService"> <port name="holamundoWSDLPort" binding="tns:holamundoWSDLBinding"> <soap:address location="http://172.16.1.212:9080/holamundoWSDLService/holamundoWSDLPort"/> </port> </service> <plnk:partnerLinkType name="holamundoWSDL"> <!-- A partner link type is automatically generated when a new port type is added. Partner link types are used by BPEL processes. 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. A partner link type characterizes the conversational relationship between two services. The partner link type can have one or two roles. --> <plnk:role name="holamundoWSDLPortTypeRole" portType="tns:holamundoWSDLPortType"/> </plnk:partnerLinkType> </definitions>
Aqui esta el WSDPort que se crea
// ************************************************************************ // // The types declared in this file were generated from data read from the // WSDL File described below: // WSDL : http://172.16.1.212:9080/holamundoWSDLService/holamundoWSDLPort?wsdl // Encoding : UTF-8 // Version : 1.0 // (14/02/2020 3:19:30 p. m. - 1.33.2.5) // ************************************************************************ // unit holamundoWSDLPort; interface uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns; type // ************************************************************************ // // The following types, referred to in the WSDL document are not being represented // in this file. They are either aliases[@] of other types represented or were referred // to but never[!] declared in the document. The types from the latter category // typically map to predefined/known XML or Borland types; however, they could also // indicate incorrect WSDL documents that failed to declare or import a schema type. // ************************************************************************ // // !:string - "http://www.w3.org/2001/XMLSchema" // ************************************************************************ // // Namespace : http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL // transport : http://schemas.xmlsoap.org/soap/http // style : rpc // binding : holamundoWSDLBinding // service : holamundoWSDLService // port : holamundoWSDLPort // URL : http://172.16.1.xxx:xxxx/holamundoWSDLService/holamundoWSDLPort // ************************************************************************ // holamundoWSDLPortType = interface(IInvokable) ['{729E3E5A-A0A6-8FB5-0C36-DF81F98A9B89}'] function holamundoWSDLOperation(const entrada: WideString): WideString; stdcall; end; function GetholamundoWSDLPortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): holamundoWSDLPortType; implementation function GetholamundoWSDLPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): holamundoWSDLPortType; const defWSDL = 'http://172.16.1.xxx:xxxx/holamundoWSDLService/holamundoWSDLPort?wsdl'; defURL = 'http://172.16.1.xxx:xxxx/holamundoWSDLService/holamundoWSDLPort'; defSvc = 'holamundoWSDLService'; defPrt = 'holamundoWSDLPort'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as holamundoWSDLPortType); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end; initialization InvRegistry.RegisterInterface(TypeInfo(holamundoWSDLPortType), 'http://j2ee.netbeans.org/wsdl/Bpelholamundo/src/holamundoWSDL', 'UTF-8'); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(holamundoWSDLPortType), ''); InvRegistry.RegisterInvokeOptions(TypeInfo(holamundoWSDLPortType), ioLiteral); end.
y aqui lo llamo
unit Formulario1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,holamundoWSDLPort, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := GetholamundoWSDLPortType().holamundoWSDLOperation('1'); end; end.
No se que estoy haciendo mal o q me falta
garcias
#38
Escrito 18 febrero 2020 - 04:16
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.
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
https://www.youtube.com/watch?v=-q-vc99w7-s
#39
Escrito 19 febrero 2020 - 12:29
Muchas gracias por compartir la solución
Un saludo
#40
Escrito 19 febrero 2020 - 09:41
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
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
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