Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   AEAT envio de datos vía Webservice problemas con WSDL (https://www.clubdelphi.com/foros/showthread.php?t=94215)

CelsoO 05-10-2019 09:26:35

AEAT envio de datos vía Webservice problemas con WSDL
 
Buenos días, disculpar pero soy nuevo en WebServices y tengo un montón de dudas que me gustaría si pudiera alguien aclararme. Necesito enviar información a través de WS usando el mensaje Ie235, he obtenido la Interfase con WSDLImport sin problemas y en principio parece que todo es correcto, añadí el certificado, etc. y consigo conectar con el servidor de pruebas y recibo el XML de respuesta pero la clase de salida no se crea correctamente. Yo uso CppBuilder y recibo el puntero a la clase pero las propiedades están a NULL. Hablando con el soporte de la AEAT me indican que algunas veces hay problemas con algunas herramientas y me facilitan un cambio en el fichero WSDL pero no sé como realizarlo y modificar la Interfase.

por favor, ¿a alguno os ha pasado lo mismo?

Casimiro Notevi 05-10-2019 11:06:08

Echa un vistazo al hilo de Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice
Puede que ahí encuentres la solución.

CelsoO 05-10-2019 11:15:08

Muchas gracias, lo he revisado y no he encontrado nada o no he sabido verlo. Mi problema es que no sé como una vez realizada la modificacion:
"
La primera, que mejor ha funcionado , es desplegar los wsdl's cambiando, sobre el fichero wsdl, la definición del mensaje de salida dejándolo de la siguiente forma:

<wsdl:message name="Salida">
<wsdl : part name="Ie215V1Sal1" element="Sal201:Ie201" />
<wsdl : part name="Ie215V1Sal2" element="Sal204:Ie204" />
</wsdl:message>
"


al importar el WSDL desde el archivo se pierde toda la extracion de tipos y no se como recuperarla.

Casimiro Notevi 05-10-2019 11:22:31

Cita:

Empezado por CelsoO (Mensaje 533842)
Muchas gracias, lo he revisado y no he encontrado nada o no he sabido verlo.

En menos de 5 minutos has revisado 76 páginas con 3038 mensajes, explícame cómo lo haces :confused:

CelsoO 05-10-2019 14:25:31

Cita:

Empezado por Casimiro Notevi (Mensaje 533843)
En menos de 5 minutos has revisado 76 páginas con 3038 mensajes, explícame cómo lo haces :confused:

Es una historia larga, llevo pegandome con este tema varias semanas, hasta encontrar donde esta el problema

Mi herramienta es/era rad 2009 archited y sim problemas pero al intentar enviar por primera vez mensjes con certificado digital han empezado los problemas por resumir he adquirido cppbuilder río Enterprise y sigo sin entender porque no funciona. Así que después de buscar en foros encontré el hilo que me sigeriste y despues de revisar (te aseguro que he revisado ha conciencia pues es lo más parecido a mi situacion) me decidí a registrarme y solicitar ayuda porque sinceramente ya no se que más hacer (he solicitado ayuda pagando y sin pagar y nada)

Casimiro Notevi 05-10-2019 15:05:18

Intenta explicar con el mayor detalle posible tu caso, saludos.

manelb 06-10-2019 09:05:49

Cuando dices...

Cita:

Empezado por CelsoO (Mensaje 533840)
... pero la clase de salida no se crea correctamente.

¿te refieres a que el xml que envías no está correctamente construido?


¿Habías enviado con anterioridad en Delphi ?
De tus mensajes entiendo que antes enviabas sin problemas con D2009 pero sin firmar. ¿Es esto correcto?


Saludos

CelsoO 06-10-2019 14:00:19

Cita:

Empezado por manelb (Mensaje 533849)
Cuando dices...



¿te refieres a que el xml que envías no está correctamente construido?


¿Habías enviado con anterioridad en Delphi ?
De tus mensajes entiendo que antes enviabas sin problemas con D2009 pero sin firmar. ¿Es esto correcto?


Saludos


Disculpar, pero creia que habia respondido antes pero he debido de pulsar otro boton.

los XML se crean correctamente, el de envio lo validó el servicio de atencion al usuario de la AEAT , y en el de respuesta lo capturo en el evento AfterExecute y la respuesta indica lo esperado (error por activar el FLAG pruebas en el servidor de Debug de la AEAT). Si ya habia usado WS con RAD2009 pero a HTTP este es el primero a HTTPS con Certificado digital y despues de revisar horas foros parece que habia algun Bug en HTTPSOAPtransport que lanza EXecption sin serlo. Pero despues probar de todo decidí actualizar a CPPBuilder RIO 10.3, y me permite depurar el proceso y descubir que envia/recibe sin problemas pero por alguna razon no actualiza la Clase de vuelta.

Quiero decir, que cuando hago la llamada

outp= WS->Ie235V1(inp); es C pero es igual que Delphi!!


outp recibe una direccion (lo inicializo antes a NULL) pero las propiedades de la clase estan a NULL.

La Clase esta definida en WSDLImport como:

class Ie235V1SalType : public TRemotable {
private:
Ie2352* FIe235;
bool FIe235_Specified;
Ie204* FIe204;
bool FIe204_Specified;
void __fastcall SetIe235(int Index, Ie2352* _prop_val)
{ FIe235 = _prop_val; FIe235_Specified = true; }
bool __fastcall Ie235_Specified(int Index)
{ return FIe235_Specified; }
void __fastcall SetIe204(int Index, Ie204* _prop_val)
{ FIe204 = _prop_val; FIe204_Specified = true; }
bool __fastcall Ie204_Specified(int Index)
{ return FIe204_Specified; }

public:
__fastcall Ie235V1SalType();
__fastcall ~Ie235V1SalType();
__published:
__property Ie2352* Ie235 = { index=(IS_OPTN|IS_REF), read=FIe235, write=SetIe235, stored = Ie235_Specified };
__property Ie204* Ie204 = { index=(IS_OPTN|IS_REF), read=FIe204, write=SetIe204, stored = Ie204_Specified };
};


Segun la AEAT el problema es que está definida como COMPLEX ???? y da problemas con algunas herramienta ???? os adjunto el comentario

"
<wsdl:message name="Salida">
<wsdl:part name="Ie235V1Sal" element="Sal235:CD235A" />
<wsdl:part name="Ie235V1Sal2" element="Sal204:CD204A" />
</wsdl:message>

El mismo problema le ha ocurrido a alguna gente con el menasaje 215 que también tiene dos posibles respuestas (201 y 204) y le recomendamos la misma solución

"


Pero no sé como efectuar está modificacion, ya que al modificar el WSDL e importarlo con el wizard no me construye nada.??




manelb 08-10-2019 12:14:09

Pues la verdad, no se me ocurre que aconsejarte…

Si me encontrase en esta situación, por probar, lo que haría sería enviar el xml directamente a través de un navegador para verificar si la respuesta es la misma.
Yo he utilizado el complemento para Chrome Wizdler.

Mi experiencia se base en los envíos del SII.
Supongo que de igual forma tienes un entorno de pruebas.

También verificaría que están instaladas las librerías capicom, y que se hace uso de ellas.
Para los envíos del SII son necesarias.

Siento no poder darte más información
Saludos

CelsoO 08-10-2019 22:14:41

Cita:

Empezado por manelb (Mensaje 533874)
Pues la verdad, no se me ocurre que aconsejarte…

Si me encontrase en esta situación, por probar, lo que haría sería enviar el xml directamente a través de un navegador para verificar si la respuesta es la misma.
Yo he utilizado el complemento para Chrome Wizdler.

Mi experiencia se base en los envíos del SII.
Supongo que de igual forma tienes un entorno de pruebas.

También verificaría que están instaladas las librerías capicom, y que se hace uso de ellas.
Para los envíos del SII son necesarias.

Siento no poder darte más información
Saludos

sinceramente muchas gracias por tu ayuda, tengo una mezcla de errores que me han dejado bloqueado. Cuando corro el programa en RAD2009 (WIN7 Prof.) lanza una excepcion que no identifica nada que pueda ayudar (esto parece que hay reportado entradas al respecto, bug en HTTPRIOTranspor.pas). El mismo programa (version release) ejecutado en CppBuilder RIO (WIN 10 Prof.) envia y recibe los XML sin problemas (incleible!) pero las propiedades de clase resultante estan a NULL ( pero el puntero recibido que direcciona a la Clase se actualiza por la funcion llamada??) e imagino que esto es a lo que se refiere el soporte de la AEAT. en fin, parada y paso atras, ... mi problema es el tiempo.

gracias de nuevo

manelb 09-10-2019 14:46:29

¿La unidad obtenida con el Import WSDL que utilizas para compilar en RIO es la generada con RAD2009 ??

Lo digo por que no puedas tener un cruce de versiones ...

CelsoO 09-10-2019 20:03:41

Cita:

Empezado por manelb (Mensaje 533893)
¿La unidad obtenida con el Import WSDL que utilizas para compilar en RIO es la generada con RAD2009 ??

Lo digo por que no puedas tener un cruce de versiones ...

He empezado desde cero en CppBuilder RIO para evitar el cruce que me indicas, he encontrado la diferencia que me generaba un XML distinto (me incluia un NameSpace que no le gustaba a la AEAT , me falta encontrar el flag que lo activa o desactiva) solo me falta; como formatear la HORAPreparacion que segun la 3WC incluye ZonaHoraria (en este caso Z) y no les gusta a la AEAT y por ultimo conseguir que la Clase se genere correctamente para poder recuperar la informacion ya que el XML de respuesta llega correctamente.

Disculpa la paliza pero necesito habalar con alguien.

Si cobras por sesion de sicologia enviame la factura.

Gracias


La franja horaria es GMT +2. Ahora son las 19:50:17.

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