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

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2017
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
webService Soap de la Administración Digital Española notific@

Descripción del WebService (WSDL y XSD): aqui
Estoy tratando de utilizar un webService Soap de la Administración Digital Española.
Concretamente para recibir notificaciones electrónicas del servicio https://notificaciones.060.es, para integrar en mi aplicación la recepción de notificaciones de hacienda, Seguridad Social, etc.
Utilizando el ejemplo de este hilo (post #39) de este foro, ya he conseguido autentificarme con certificado digital.
Ahora estoy tratando de componer la petición para la función ConsultaMetadatos, que se describe en el wsdl que va en el zip adjunto.
Código:
function  ConsultaMetadatos(const peticion: PeticionConsulta): RespuestaConsulta; stdcall;
en el xsd del servicio (tambien en el zip) se define el interface de PeticionConsulta que debepasarsele. Asi:
Código:
{ IXMLPeticionConsultaTipo }

  IXMLPeticionConsultaTipo = interface(IXMLNode)
    ['{9C8D0AD3-2ADD-4C15-A401-F88671884764}']
    { Property Accessors }
    function Get_ComoAutorizadoDelTitular: UnicodeString;
    function Get_PaginaSolicitada: Integer;
    function Get_ComoAutorizado: Boolean;
    function Get_IncluirNombreOrganismoEmisor: Boolean;
    function Get_IncluirDatosRecogida: Boolean;
    function Get_TicketID: UnicodeString;
    function Get_Estado: UnicodeString;
    function Get_FechaInicio: UnicodeString;
    function Get_FechaFin: UnicodeString;
    function Get_Emisor: UnicodeString;
    function Get_Notificado: UnicodeString;
    function Get_TipoMensaje: UnicodeString;
    function Get_ActoNotificado: UnicodeString;
    procedure Set_ComoAutorizadoDelTitular(Value: UnicodeString);
    procedure Set_PaginaSolicitada(Value: Integer);
    procedure Set_ComoAutorizado(Value: Boolean);
    procedure Set_IncluirNombreOrganismoEmisor(Value: Boolean);
    procedure Set_IncluirDatosRecogida(Value: Boolean);
    procedure Set_TicketID(Value: UnicodeString);
    procedure Set_Estado(Value: UnicodeString);
    procedure Set_FechaInicio(Value: UnicodeString);
    procedure Set_FechaFin(Value: UnicodeString);
    procedure Set_Emisor(Value: UnicodeString);
    procedure Set_Notificado(Value: UnicodeString);
    procedure Set_TipoMensaje(Value: UnicodeString);
    procedure Set_ActoNotificado(Value: UnicodeString);
    { Methods & Properties }
    property ComoAutorizadoDelTitular: UnicodeString read Get_ComoAutorizadoDelTitular write Set_ComoAutorizadoDelTitular;
    property PaginaSolicitada: Integer read Get_PaginaSolicitada write Set_PaginaSolicitada;
    property ComoAutorizado: Boolean read Get_ComoAutorizado write Set_ComoAutorizado;
    property IncluirNombreOrganismoEmisor: Boolean read Get_IncluirNombreOrganismoEmisor write Set_IncluirNombreOrganismoEmisor;
    property IncluirDatosRecogida: Boolean read Get_IncluirDatosRecogida write Set_IncluirDatosRecogida;
    property TicketID: UnicodeString read Get_TicketID write Set_TicketID;
    property Estado: UnicodeString read Get_Estado write Set_Estado;
    property FechaInicio: UnicodeString read Get_FechaInicio write Set_FechaInicio;
    property FechaFin: UnicodeString read Get_FechaFin write Set_FechaFin;
    property Emisor: UnicodeString read Get_Emisor write Set_Emisor;
    property Notificado: UnicodeString read Get_Notificado write Set_Notificado;
    property TipoMensaje: UnicodeString read Get_TipoMensaje write Set_TipoMensaje;
    property ActoNotificado: UnicodeString read Get_ActoNotificado write Set_ActoNotificado;
  end;
Pero no se como construir el objeto para pasarselo a la llamada al web service
Código:
  result := GetAPE_SNE_BuzonWS_TipoPuerto.ConsultaMetadatos(PeticionConsulta);
¿Lo que le tengo que pasar es un xml o un objeto?
¿Como puedo construirlo?
Alguien me puede echar una mano.
Archivos Adjuntos
Tipo de Archivo: zip DocumentacionWEB-SERVICE.zip (8,2 KB, 56 visitas)
Responder Con Cita
  #2  
Antiguo 27-01-2017
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 19
bitbow Va camino a la fama
Cuando importas el wsdl desde delphi este te genera en unas unidades(a modo de interface) la definiciòn de objetos, funciones y demas usar en el webservice, revisa como estan estructurados ahi.

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #3  
Antiguo 28-01-2017
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
Si. He importado el wsdl con las funciones disponibles en el WebService y los dos xsd de la descripción de tipos (Aunque uno de ellos me da error, fui sacando los interfaces manualmente).
Lo que no sé es como construirir ahora el objeto que se envía por SOAP, en el caso que pongo "PeticionConsulta".
Como construyo ese objecto utilizando la interface y ¿Le paso directamente ese objecto o debo hacer con el él un xml?
Todo esto es nuevo para mí y estoy muy perdido.
Saludos.
Responder Con Cita
  #4  
Antiguo 31-01-2017
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
No acabo de comprender como se construye el objeto que le tengo que pasar al soap.
He tratado de hacerlo así
Código:
var 
  LDocument         : IXMLDocument;
  PeticionConsulta  : IXMLPeticionConsultaTipo;
  RespuestaConsulta : IXMLRespuestaConsultaTipo;
  Estado            : IXMLNode;
  TipoMensaje       : IXMLNode;
.....
.....
  LDocument := TXMLDocument.Create(nil);
  LDocument.Active := True;
  LDocument.DocumentElement := LDocument.CreateNode('PeticionConsulta', ntElement, '');
  LDocument.DocumentElement.Attributes['ComoAutorizado'] := 'false';
  LDocument.DocumentElement.Attributes['IncluirNombreOrganismoEmisor'] := 'true';
  LDocument.DocumentElement.Attributes['IncluirDatosRecogida'] := 'true';
  Estado := LDocument.CreateNode('Estado', ntElement);
  LDocument.DocumentElement.ChildNodes.Add(Estado);
  TipoMensaje := LDocument.CreateNode('TipoMensaje', ntElement);
  LDocument.DocumentElement.ChildNodes.Add(TipoMensaje);
y obtengo este xml
Código:
<PeticionConsulta ComoAutorizado="false" IncluirNombreOrganismoEmisor="true" IncluirDatosRecogida="true">
   <Estado/>
   <TipoMensaje/>
</PeticionConsulta>
El manual del webservice lo describe así:

Alguien puede hecharme una mano con esto?.
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
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3594 Hace 3 Semanas 20:44:37
COVE. Encabezados en XML-Cliente Webservice-SOAP ruedabeat2003 Internet 4 10-01-2012 02:11:59
SOAP POST - Webservice con Certificado y SSL JXJ Varios 5 09-05-2011 21:11:08
Consumir WebService. Ayuda con XML,WSDL,XSD,SOAP josemmerida Internet 2 23-12-2010 14:37:16
WebService y SOAP linsua Varios 0 07-04-2004 20:27:16


La franja horaria es GMT +2. Ahora son las 01:08:58.


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