Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo Hace 5 Días
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 6
Poder: 0
mtxtania Va por buen camino
Cita:
Empezado por mtxtania Ver Mensaje
Buenos días, he estado hablando con la AEAT pero de momento no saben dar solución a que las respuestas lleguen a nil… He probado a modificar lo que comentáis pero eso es para .NET, al menos es lo que me ha corroborado el de la AEAT.

Alguien ha hablado de leer el XML aunque estamos de acuerdo que no es nada recomendable. Crearíais una clase con la estructura del XML o os lo leerías directamente? Alguien ha avanzado un poco mas?

A parte estoy mirando algunos de los errores que me da. Uno de ellos es Formato de hora no válido, cuando le paso un datetime. En el XML de petición se genera 10:50:00.000Z El problema viene que muestra .000Z Podría probar de modificar el WDSL pero si tenemos que tocar mil cosas vaya gracia

He probado así:

Código Delphi [-]
 HoraPreparacion :=  Ie215V11.HoraTipo.Create;
    HoraPreparacion.AsTime   :=now;

Y así:
Código Delphi [-]
HoraPreparacion :=  Ie215V11.HoraTipo.Create;
     with HoraPreparacion do
     begin
       Hour:=10;
       Minute:=50;
       Millisecond:=00;
     end;

Sabéis como puedo pasarlo correctamente. No quiero tener que quitarlo directamente del XML.

Me contesto a mi misma sobre lo de la hora, me lo acepta utilizando :

Código Delphi [-]
HoraPreparacion.XSToNative('09:00:00');
Responder Con Cita
  #22  
Antiguo Hace 5 Días
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 69
Poder: 12
APO Va por buen camino
Hola mtxtania,

Pues vaya con los de la AEAT! Bueno, de momento, puedes gestionarlo como lo estoy haciendo yo, que es trabajar sobre el XML de respuesta. Para ello, lo que yo he hecho es crear una variable de tipo TXMLDocument e ir recorriendo los nodos. Te pongo una muestra de ejemplo:

Código Delphi [-]
procedure TfrmMantenimientoTabla.ProcesarXML;
var
   XMLDocument: TXMLDocument;
   XMLDocumentBody, XMLDocumentRechazado, XMLDocumentAceptado: IXMLNode;
   i: integer;
begin
   XMLDocument:=TXMLDocument.Create(Self);
   XMLDocument.Active:=False;
   try
      XMLDocument.LoadFromXML(mXML.Text); //Memo donde tengo cargado el XML
      XMLDocument.Active:=True;
      for i:=0 to XMLDocument.DocumentElement.ChildNodes.Count-1 do
      begin
         if UpperCase(trim(XMLDocument.DocumentElement.ChildNodes[i].LocalName))='BODY' then
         begin
            XMLDocumentBody:=XMLDocument.DocumentElement.ChildNodes[i];
            for j:=0 to XMLDocumentBody.ChildNodes.Count-1 do
            begin
               if UpperCase(trim(XMLDocumentBody.ChildNodes[j].LocalName))='IE204' then
               begin
                  //MENSAJE RECHAZADO (Si el mensaje de respuesta tiene el nodo Ie204 es que ha sido rechazado)
                  XMLDocumentRechazado:=XMLDocumentBody.ChildNodes[j];
                  //...

               end
               else
               begin
                  //MENSAJE ACEPTADO
                  if UpperCase(trim(XMLDocumentBody.ChildNodes[j].LocalName))='IE201' then
                  begin
                     XMLDocumentAceptado:=XMLDocumentBody.ChildNodes[j];
                     //…
                  end;
               end;
            end;
         end;
      end;
   except

   end;
end;

Y respecto a la hora correcto, es como lo estoy haciendo yo también:

Código Delphi [-]
XML.Cabecera.HoraPreparacion.XSToNative(FormatDateTime('hh:mm:ss',now));

Saludos!
Responder Con Cita
  #23  
Antiguo Hace 5 Días
alejango alejango is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Poder: 0
alejango Va por buen camino
Igual que todos

Ya logro el envio , pero a la hora de la respuesta no me da nada. He modificado e importado el wdsl me ha generado muy poco codigo y con errores.


Estoy atrancado con XE5 , por si avanza alguien. Pleaseeee......
Responder Con Cita
  #24  
Antiguo Hace 5 Días
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 6
Poder: 0
mtxtania Va por buen camino
Cita:
Empezado por APO Ver Mensaje
Hola mtxtania,

Pues vaya con los de la AEAT! Bueno, de momento, puedes gestionarlo como lo estoy haciendo yo, que es trabajar sobre el XML de respuesta. Para ello, lo que yo he hecho es crear una variable de tipo TXMLDocument e ir recorriendo los nodos. Te pongo una muestra de ejemplo:

Código Delphi [-]
procedure TfrmMantenimientoTabla.ProcesarXML;
var
   XMLDocument: TXMLDocument;
   XMLDocumentBody, XMLDocumentRechazado, XMLDocumentAceptado: IXMLNode;
   i: integer;
begin
   XMLDocument:=TXMLDocument.Create(Self);
   XMLDocument.Active:=False;
   try
      XMLDocument.LoadFromXML(mXML.Text); //Memo donde tengo cargado el XML
      XMLDocument.Active:=True;
      for i:=0 to XMLDocument.DocumentElement.ChildNodes.Count-1 do
      begin
         if UpperCase(trim(XMLDocument.DocumentElement.ChildNodes[i].LocalName))='BODY' then
         begin
            XMLDocumentBody:=XMLDocument.DocumentElement.ChildNodes[i];
            for j:=0 to XMLDocumentBody.ChildNodes.Count-1 do
            begin
               if UpperCase(trim(XMLDocumentBody.ChildNodes[j].LocalName))='IE204' then
               begin
                  //MENSAJE RECHAZADO (Si el mensaje de respuesta tiene el nodo Ie204 es que ha sido rechazado)
                  XMLDocumentRechazado:=XMLDocumentBody.ChildNodes[j];
                  //...

               end
               else
               begin
                  //MENSAJE ACEPTADO
                  if UpperCase(trim(XMLDocumentBody.ChildNodes[j].LocalName))='IE201' then
                  begin
                     XMLDocumentAceptado:=XMLDocumentBody.ChildNodes[j];
                     //…
                  end;
               end;
            end;
         end;
      end;
   except

   end;
end;

Y respecto a la hora correcto, es como lo estoy haciendo yo también:

Código Delphi [-]
XML.Cabecera.HoraPreparacion.XSToNative(FormatDateTime('hh:mm:ss',now));

Saludos!

Muchas gracias!A ver si podemos hacerlo de otra forma!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Consumir Webservice darkerbyte Delphi para la web 5 17-11-2012 20:59:50
Consumir un webservice echo en delphi con php anahuel Delphi para la web 3 27-10-2012 07:20:42
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


La franja horaria es GMT +2. Ahora son las 02:43:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi