Cita:
Empezado por bartag
Yo he hecho pruebas partiendo de un xml y deserializando/enviando posteriormente tras cumplimentar los datos deseados y no me ha dado problemas.
Creo que el error de las cabeceras os puede venir porque:
- El objeto deserializer no admite campos soap. Por dicho motivo y como bien dices, debes tomar la parte del xml que comprende el nodo <SuministroLRFacturasEmitidas>
- No le estáis pasando el namespace al XmlSerializer.
El mío lo tengo así (para el registro facturas emitidas):
Código:
Dim x As New XmlSerializer(_SuministroLRFacturasEmitidas.GetType, "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ', "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")
' A FileStream is needed to read the XML document.
Dim filename As String = "facturaEmitidaMODEL.XML"
Using reader As New FileStream(filename, FileMode.Open)
_SuministroLRFacturasEmitidas = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas)
End Using
Todo lo anterior es -si no te he entendido mal- para hacer el envío partiendo de un xml previo...
|
Para los que lo hacemos en VB.NET, esta claro que el .xml a enviar empieza o comprende el nodo <siiLR:SuministroLRFacturasEmtidas>, y que tiene que tener la siguiente estructura para poder ser enviado a AEAT:
Código:
<siiLR:SuministroLRFacturasEmitidas>
<sii:Cabecera>
<sii:IDVersionSii>0.1</sii:IDVersionSii>
<sii:Titular>
…
Yo entiendo que los prefijos –espacios de nombres- siiLR y sii en los diferentes elemntos son obligatorios.
Despues hemos de Deserializar dicho xml para asociarlo/cargarlo en un objeto tipo SuministroLRFacturasEmitidas que es el que enviaremos a AEAT (en mi caso Dim testF As New SuministroLRFacturasEmitidas)
Pero, y aquí viene el problema, en el xml hay 2 espacios de nombres: siiLR y sii que de alguna manera hay que indicar que se tengan en cuenta.
yo he intentado tu solucion bartag, es decir:
Código:
Dim x As New XmlSerializer(testF.GetType, "https://w**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd") ', "https://w**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd")
Dim reader As New FileStream(filename, FileMode.Open)
testF = CType(x.Deserialize(reader), SuministroLRFacturasEmitidas)
pero no me funciona.
Que puede estar mal?. Si a ti te funciona, ¿puedes poner el codigo mas amplio?
Observo que en Dim x As New XmlSerializer(testF.GetType, "https://w**.agenciatributaria..., repites la misma cadena, aunque supongo que lo correcto como segunda cadena seria poner:
https://**2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd,
lo he probado tambien asi, pero sigue sin funcionar.
Muchas gracias por tu ayuda
P.D. donde pongo ** me refiero a una enlace (No tengo permiso para poner enlaces de forma normal)