Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-04-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Consumir un Web Service

Estimados.

Necesito enviar cierta informacion a un web service de otro sistema desarrollado por otra gente.
Me dieron el archivo wsdl el cual he logrado importar con el wizard y me ha la creado unidad correspondiente.

Aparentemente es muy sencillo, tiene solo una funcion para recibir los datos que yo le debo
enviar. He logrado que compile pero no estoy seguro si el archivo estaba bien o si la unidad
que genero esta bien, porque no he podido acceder a su funcion desde otra unidad de mi sistema.

He leido el post de egostar sobre Web services , pero aun asi no he podido hacer que funcionara.

Les dejo el codigo de la unidad que genero el wizard a ver si alguien puede decirme si lo genero
bien o como debo llamar desde mis otras unidades a la funcion que aqui se hace presente.

Código Delphi [-]

unit u_webService;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

const
  IS_OPTN = $0001;
  IS_UNBD = $0002;
  IS_NLBL = $0004;
  IS_UNQL = $0008;
  IS_ATTR = $0010;
  IS_TEXT = $0020;

type

  resultado = interface(IInvokable)
  ['{E215B04D-08B9-A9EF-456D-7550D58C4D38}']

// esta es la funcion que debo utililzar
    function  altaresult(const ErNumLin: Int64; const ResuNumLin: Integer; const ResuDsc: WideString;    const ResuUni: WideString; const ResuVRef: WideString; const ResuVHallado: WideString;
                         const ResuObs: WideString): Integer; stdcall;

  end;

function Getresult(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): resultado;

implementation
  uses SysUtils;

function Getresult(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): resultado;
const
  defWSDL = 'C:\result.wsdl';
  defURL  = 'http://10.5.1.1:8080/WebServiceEstu/services/result';
  defSvc  = 'resultService';
  defPrt  = 'result';
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 resultado);
    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(resultado), 'http://logica', 'UTF-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(resultado), '');
  InvRegistry.RegisterInvokeOptions(TypeInfo(resultado), ioDocument);

end.

Se supone que debo utilizar esa funcion y pasarle parametros que el "bendito" web service esta
esperando. Ademas no lo puedo probar, ya que la ip en la cual escucha, esta en mi cliente,
y no se puede acceder desde el exterior.

Se agradece eternamente cualquier ayuda y/o sugerencia.

Saludos.
Responder Con Cita
  #2  
Antiguo 16-04-2012
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola

Pues lo primero que debes tener es acceso a la IP de tu cliente, de otra forma no se puede hacer nada.

Saludos
Responder Con Cita
  #3  
Antiguo 16-04-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Gracias egostar.

Eso por supuesto que lo tengo claro, pero en realidad no busco "probarlo" en mi pc de desarrollo,
sino tratar de hacer el codigo necesario y luego llevarlo al cliente.

Como mencionaba en el post, no he logrado acceder a la funcion "altaresult" desde otras
unidades de mi sistema.

Alguna idea porque ?

Mil gracias.
Responder Con Cita
  #4  
Antiguo 16-04-2012
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por lbidi Ver Mensaje
Gracias egostar.

Eso por supuesto que lo tengo claro, pero en realidad no busco "probarlo" en mi pc de desarrollo,
sino tratar de hacer el codigo necesario y luego llevarlo al cliente.

Como mencionaba en el post, no he logrado acceder a la funcion "altaresult" desde otras
unidades de mi sistema.

Alguna idea porque ?

Mil gracias.
Entiendo, yo haría algo así.

Código Delphi [-]
uses
   u_webService

procedure TForm1.Button1Click(Sender: TObject);
var
  wsResultado: resultado;
  Retorno: integer;
  
begin  
  wsResultado := Getresult(false,'',nil);
  Retorno := wsResultado.alteresult('***parametros***'); //Agregas todos los parámetros que te pide.
  
  if Retorno <> nil then
     showMessage(format('El resultado del método alteresult es %d',[Retorno]));
end;

Saludos
Responder Con Cita
  #5  
Antiguo 17-04-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Mil gracias, egostar.

Realmente ahora me di cuenta como funciona.

Saludos desde Uruguay
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas al consumir Servicios WEB maurixio5540 Varios 1 30-11-2011 22:23:08
Consumir WebService nasedo Varios 1 11-08-2011 14:32:57
Consumir Webservice MARLON1 Internet 0 06-07-2011 00:07:12
Problema al consumir un Webservice netcigos Varios 0 08-03-2004 15:09:30
Service y Application Service Ezecool Varios 0 30-09-2003 18:48:30


La franja horaria es GMT +2. Ahora son las 16:25:31.


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