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 03-05-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

¿Tal vez tendrías que instanciar la clase antes de llamar a "GetIe215V1"? Es decir:

Código Delphi [-]
XMLRespuesta := Ie215V1SalType.Create();
try
  XMLRespuesta := GetIe215V1(True,'',HTTPRIO1).Ie215V1(XMLEnvio);
finally
  XMLRespuesta.Free();
end;

En todo caso, asegúrate de que la respuesta de "GetIe215V1" es del tipo esperado, por ejemplo, antes de intentar acceder al mismo:

Código Delphi [-]
if (XMLRespuesta is Ie215V1) and (XMLRespuesta.Ie201.Cuerpo.AlbaranVER.DatosAceptacion.CRE) <> '') then
begin
  //...
end;

No estoy seguro de haberte ayudado... pero a lo mejor tomas alguna idea...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 03-05-2019
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
Hola dec,
He probado como dices, haciendo el Create, pero me sigue dando el mismo error AcessViolation.

Tanto si pongo el Create como si no, lo raro es que el XMLRespuesta que es de tipo Ie215V1SalType, tiene dos propiedades que son Ie201 y Ie204 y las dos vienen a nil, y por eso me da el accessviolation. Lo que no entiendo es porque vienen a nil, porque he conseguido capturar el XML de respuesta y tiene valor:

Cita:
<?xml version="1.0" encoding="ISO-8859-1"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body Id="Body">
<Ie204 xmlns:tip="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/tipos.xsd" xmlns:lis="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/listas.xsd" xmlns:cab="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/cab.xsd" xmlns="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/Ie204V1Sal.xsd">
<Cabecera>
<cab:EmisorMensaje>SIANE.ES</cab:EmisorMensaje>
<cab:ReceptorMensaje>11111111H</cab:ReceptorMensaje>
<cab:FechaPreparacion>2019-05-03</cab:FechaPreparacion>
<cab:HoraPreparacion>10:09:49</cab:HoraPreparacion>
<cab:IdentificadorMensaje>20190503100949351618</cab:IdentificadorMensaje>
<cab:IdentificadorRelacionado>201904300000000001</cab:IdentificadorRelacionado>
</Cabecera>
<Cuerpo>
<MensajeRechazo>
<ErrorFuncional>
<CodigoError>12</CodigoError>
<MotivoError>07009-Mensaje YA consumido con anterioridad y rechazado.</MotivoError>
<PosicionError>Cabecera:IdentificadorMensaje</PosicionError>
<ValorOriginal>201904300000000001</ValorOriginal>
</ErrorFuncional>
</MensajeRechazo>
</Cuerpo>
</Ie204>
</env:Body>
</env:Envelope>
Gracias por tu ayuda de todas formas!
Responder Con Cita
  #3  
Antiguo 04-05-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

El XML de respuesta que muestras en tu último mensaje contiene un error... ¿no tendrá eso que ver? Tú tratas de acceder a algo como "XMLRespuesta.Ie201.Cuerpo.AlbaranVER", pero, en el XML que muestras, no aparece "Ie201", sino "Ie204". Pero, es que además, tampoco parece existir algo como "XMLRespuesta.Ie204.Cuerpo.AlbaranVER"...

Tal vez tengas que comprobar si la respuesta contiene un error, puesto que, al menos en ese caso, el XML no parece ser el que tú esperas.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 06-05-2019
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
Hola dec, gracias por tu tiempo.

Sí, el XML de respuesta es correcto que contenga un error. Lo estoy forzando para poder procesar los errores, por eso dice 'Mensaje YA consumido con anterioridad y rechazado.'
El problema lo tengo precisamente con eso, que sí que puedo obtener el XML de respuesta, pero en cambio el objeto que me tiene que devolver el WebService me lo devuelve vacío, a nil.

Lo que devuelve el WebService es la clase Ie215V1SalType :

Código Delphi [-]
  Ie215V1SalType = class(TRemotable)
  private
    FIe201: Ie201;
    FIe201_Specified: boolean;
    FIe204: Ie204;
    FIe204_Specified: boolean;
    procedure SetIe201(Index: Integer; const AIe201: Ie201);
    function  Ie201_Specified(Index: Integer): boolean;
    procedure SetIe204(Index: Integer; const AIe204: Ie204);
    function  Ie204_Specified(Index: Integer): boolean;
  public
    constructor Create; override;
    destructor Destroy; override;
  published
    property Ie201: Ie201  Index (IS_OPTN or IS_REF) read FIe201 write SetIe201 stored Ie201_Specified;
    property Ie204: Ie204  Index (IS_OPTN or IS_REF) read FIe204 write SetIe204 stored Ie204_Specified;
  end;

Y esta a su vez contiene dos propiedades, Ie201 si el mensaje es correcto y Ie204 si el mensaje es rechazado.
Pongo el esquema para que se vea más claro https://ibb.co/D9hjVRY :



En este caso el XML viene rellenado con Ie204 porque viene rechazado. Pero el problema, es la respuesta Ie215V1SalType me viene tanto con el Ie201 y Ie204 a nil. La única manera que puedo acceder a la respuesta es consultando el XML. Si no hay más remedio lo tendré que hacer así, pero lo ideal es poder trabajar con el objeto Ie215V1SalType que proporciona el WebService ya que es mucho más cómodo para acceder a sus valores...

Muchas gracias de nuevo.

Última edición por Casimiro Notevi fecha: 06-05-2019 a las 11:22:39.
Responder Con Cita
  #5  
Antiguo 07-05-2019
kino_ct kino_ct is offline
Registrado
 
Registrado: may 2019
Posts: 3
Poder: 0
kino_ct Va por buen camino
Mismo Problema

Hola APO


He realizado la implementación en Delphi y además desde .Net con c#
Al realizar la llamada Ie215V1, la respuesta devuelta es null, empiezo a pensar que el mensaje que devuelve el servicio no es parseable al objeto (no lo se)...


Por favor, si alguién diera con la solución del problema indicadlo.
Un saludo y gracias
Responder Con Cita
  #6  
Antiguo 08-05-2019
ja_73 ja_73 is offline
Miembro
 
Registrado: abr 2017
Posts: 20
Poder: 0
ja_73 Va por buen camino
me pasa lo mismo

Cita:
Empezado por kino_ct Ver Mensaje
Hola APO


He realizado la implementación en Delphi y además desde .Net con c#
Al realizar la llamada Ie215V1, la respuesta devuelta es null, empiezo a pensar que el mensaje que devuelve el servicio no es parseable al objeto (no lo se)...


Por favor, si alguién diera con la solución del problema indicadlo.
Un saludo y gracias
hola kino_ct
yo estoy haciendo la implementacion en .Net con c# también.
tengo el mismo problema, la respuesta siempre es null.
analizando con wireshark, compruebo que si tengo respuesta, por lo que el problema es que no se puede parsear a objeto.
encontré una página web, donde se puede validar el esquema wsdl

wsdl-analyzer(punto)com

fuí subiendo el equema, y me dice que hay el siguiente error (por si puede servirle a alguien)
Ie215V1SoapBinding
The part of the message 'Salida' references a schema type instead of a schema element.

revisando el archivo Reference.cs del servicio veo lo siguiente en la clase salida

public partial class Salida {

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
public WasAvituallamientos.Ie215V1Service.Ie215V1SalType Ie215V1Sal;

public Salida() {
}

public Salida(WasAvituallamientos.Ie215V1Service.Ie215V1SalType Ie215V1Sal) {
this.Ie215V1Sal = Ie215V1Sal;
}
}

el Namespace está vacío, en todas los demás tipos, hay un xsd, pero en este no.
creo que el problema viene por aqui, la duda es que asignamos en el namespace para que pueda parsearlo.
a alguien se le ocurre algo?
saludos.
Responder Con Cita
  #7  
Antiguo 08-05-2019
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
Cita:
Empezado por ja_73 Ver Mensaje
hola kino_ct
yo estoy haciendo la implementacion en .Net con c# también.
tengo el mismo problema, la respuesta siempre es null.
analizando con wireshark, compruebo que si tengo respuesta, por lo que el problema es que no se puede parsear a objeto.
encontré una página web, donde se puede validar el esquema wsdl

wsdl-analyzer(punto)com

fuí subiendo el equema, y me dice que hay el siguiente error (por si puede servirle a alguien)
Ie215V1SoapBinding
The part of the message 'Salida' references a schema type instead of a schema element.

revisando el archivo Reference.cs del servicio veo lo siguiente en la clase salida

public partial class Salida {

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
public WasAvituallamientos.Ie215V1Service.Ie215V1SalType Ie215V1Sal;

public Salida() {
}

public Salida(WasAvituallamientos.Ie215V1Service.Ie215V1SalType Ie215V1Sal) {
this.Ie215V1Sal = Ie215V1Sal;
}
}

el Namespace está vacío, en todas los demás tipos, hay un xsd, pero en este no.
creo que el problema viene por aqui, la duda es que asignamos en el namespace para que pueda parsearlo.
a alguien se le ocurre algo?
saludos.

Hola,
En mi caso estoy implementándolo en Delphi XE8 y en la unidad que me genera el WSDL de importación me pone estos namespace en el esquema de salida Ie215V1SalType:
Código Delphi [-]
  
RemClassRegistry.RegisterExternalPropName(TypeInfo(Ie215V1SalType), 'Ie201', '[Namespace="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/Ie201V1Sal.xsd"]');
RemClassRegistry.RegisterExternalPropName(TypeInfo(Ie215V1SalType), 'Ie204', '[Namespace="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/adia/avit/ws/Ie204V1Sal.xsd"]');

Código Delphi [-]
  // ************************************************************************ //
  // XML       : Ie215V1SalType, global, 
  // Namespace : https://www3.agenciatributaria.gob.e...s/Ie215V1.wsdl
  // Serializtn: [xoLiteralParam]
  // Info      : Wrapper
  // ************************************************************************ //

Y algo curioso, es que en la función para consumir el WebService me pone 'Cannot unwrap'. ¿Será por esto que no puede parsearlo correctamente?:

Código Delphi [-]
  Ie215V1 = interface(IInvokable)
  ['{AC981E05-A0BD-5252-1FB3-FB4E248F1318}']

    // Cannot unwrap: 
    //     - Output part does not refer to an element
    //     - Input element wrapper name does not match operation's name
    function  Ie215V1(const Ie215V1Ent: Ie215): Ie215V1SalType; stdcall;
  end;

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

Revisando la documentación hay dos esquemas de salida, uno para cuando el mensaje es aceptado y otro para cuando es rechazado. Son estos:

El diseño del esquema de salida correcta:
https://www3.agenciatributaria.gob.e...Ie201V1Sal.xsd

El diseño del esquema de salida para los albaranes incorrectos:
https://www3.agenciatributaria.gob.e...Ie204V1Sal.xsd

A ver si entre todos podemos conseguirlo. Gracias!!
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 15:01:46.


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