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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2019
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 8
Poder: 0
mtxtania Va por buen camino
Buenas tardes, yo de momento quiero probar sin modificar el WDSL aunque me salta el siguiente error y no puedo analizar las respuestas:


Codigo[1207].Se esperaba Atributo 'Id' event: com.ibm.xml.xlxp.api.stax.events.StartElementImpl@84705eb1


Estoy con los albaranes, Ie215V1.wsdl



Os suena a alguno?
Responder Con Cita
  #2  
Antiguo 15-05-2019
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
Cita:
Empezado por mtxtania Ver Mensaje
Buenas tardes, yo de momento quiero probar sin modificar el WDSL aunque me salta el siguiente error y no puedo analizar las respuestas:

Codigo[1207].Se esperaba Atributo 'Id' event: com.ibm.xml.xlxp.api.stax.events.StartElementImpl@84705eb1

Estoy con los albaranes, Ie215V1.wsdl

Os suena a alguno?
Hola mtxtania,
Eso también me pasaba a mí. Es porque al importar el WSDL al final de todo añade unos namespace a los atributos Id, NifDeclarante, NombreDeclarante y Test. Se ve que al generar el XML de salida no le gusta con esos namespace.

Yo lo solucioné comentando esas líneas:

Código Delphi [-]
//  RemClassRegistry.RegisterExternalPropName(TypeInfo(Ie201Tipo), 'Test', '[Namespace="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/listas.xsd"]');
//  RemClassRegistry.RegisterExternalPropName(TypeInfo(Ie215Tipo), 'Id', '[Namespace="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/tipos.xsd"]');
//  RemClassRegistry.RegisterExternalPropName(TypeInfo(Ie215Tipo), 'NifDeclarante', '[Namespace="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/tipos.xsd"]');
//  RemClassRegistry.RegisterExternalPropName(TypeInfo(Ie215Tipo), 'NombreDeclarante', '[Namespace="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/tipos.xsd"]');
//  RemClassRegistry.RegisterExternalPropName(TypeInfo(Ie215Tipo), 'Test', '[Namespace="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/listas.xsd"]');

Pruébalo y cuéntanos a ver qué tal
Responder Con Cita
  #3  
Antiguo 15-05-2019
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 8
Poder: 0
mtxtania Va por buen camino
Perfecto gracias!!

Ahora me encuentro que las respuestas me vienen a nil como comentabais mas arriba. Tengo que modificar el WSDL? Os ha funcionado a vosotros?
Responder Con Cita
  #4  
Antiguo 15-05-2019
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
¿En qué lenguaje de programación lo estás haciendo? Porque yo utilizando Delphi XE8, y modificando el WSDL me siguen viniendo a nil. En cambio, ja_73 que lo está haciendo en .NET, modificando el WSDL sí que le ha funcionado.

Básicamente del WSDL hay que cambiar esta parte:
Código Delphi [-]
message name="Salida">
art type="Ie215V1SalType" name="Ie215V1Sal"/>
message>

Por esta otra:
Código Delphi [-]
message name="Salida"> 
   art name="Ie215V1Sal1" element="Sal201:Ie201" /> 
   art name="Ie215V1Sal2" element="Sal204:Ie204" /> 
message>

Y luego a la hora de consumir el Webservice debería ser algo así:
Código Delphi [-]
//Aquí declaro las variables para consumir el Webservice
var
   XML: Ie215V11.Ie215;
   XMLRespuestaIe201: Ie215V11.Ie201;
   XMLRespuestaIe204: Ie215V11.Ie204;

begin
   //Rellenemos los datos que voy a enviar
   XML:=Ie215V11.Ie215.Create;
   XML.Id:='201905150001'; //Debe ser un identificar único por mensaje
   XML.NifDeclarante:='XXXXXXXXX';
   XML.NombreDeclarante:='XXXXXXXXXX';

   //… rellenar los demás datos necesarios ...


   //Y aquí consumo el Webservice
   Ie215V11.GetIe215V1(True,'',HTTPRIO1).Ie215V1(XML,XMLRespuestaIe201,XMLRespuestaIe204);

Y en teoría una de las dos respuestas XMLRespuestaIe201 (mensaje aceptado) o XMLRespuestaIe204 (mensaje rechazado) debería tener valor. Pero a mí me vienen las dos a nil.
Responder Con Cita
  #5  
Antiguo 15-05-2019
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 8
Poder: 0
mtxtania Va por buen camino
Lo estoy haciendo con Delphi 10.2 y a mi también me vienen a nil. Aún estou probando pero es lo que he visto de momento.
Responder Con Cita
  #6  
Antiguo 16-05-2019
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 8
Poder: 0
mtxtania Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 16-05-2019
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 8
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
  #8  
Antiguo 16-05-2019
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
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
  #9  
Antiguo 22-05-2019
mtxtania mtxtania is offline
Registrado
 
Registrado: may 2019
Posts: 8
Poder: 0
mtxtania Va por buen camino
Alguien tiene alguna novedad referente al desarrollo en Delphi?Sobre las respuestas a nil?
Responder Con Cita
  #10  
Antiguo 16-05-2019
alejango alejango is offline
Registrado
 
Registrado: abr 2007
Posts: 9
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
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
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 23:10:29.


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