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 02-03-2017
angelhorse angelhorse is offline
Registrado
NULL
 
Registrado: feb 2017
Posts: 5
Poder: 0
angelhorse Va por buen camino
SIIHacienda

Cita:
Empezado por jlegido Ver Mensaje
Hola angelhorse,

Yo tambien estoy haciendo este tema en VB.net (muy similar a c#), pero no consigo crear bien el archivo XML
Parto de la base de que el archivo XML a generar debe seguir el modelo cuyo ejemplo hay en SII_Descripcion_ServicioWeb_v0.5_es_es.pdf en apartado 8.1.1.1.Ejemplo mensaje de XML de alta.
Yo siguiendo las directrices de los compañeros de Delphi he adaptado su codigo (usando el ejemplo de seccion_31 que colgo WebServices AEAT Berlin_3.rar.
Lo hago usando este codigo (solo pongo parte)
Dim i As Long
Dim ASuministroLRFacturasEmitidas As SuministroLRFacturasEmitidas
Dim ARegistroLRFacturasEmitidas() As LRfacturasEmitidasType
'===========================================================================
'generacion info factura/s emitidas----------------------------------------------------------------
ASuministroLRFacturasEmitidas = New SuministroLRFacturasEmitidas()
ASuministroLRFacturasEmitidas.Cabecera = New CabeceraSii()

'DATOS Cabecera--------------------------------------------------------------------------
ASuministroLRFacturasEmitidas.Cabecera.IDVersionSii = ClienteSII1.VersionSiiType.Item05 '0.5 version actual del SII
ASuministroLRFacturasEmitidas.Cabecera.Titular = New PersonaFisicaJuridicaESType()
'Nombre del presentador
ASuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon = "Empresa XXX"
'el NIF del presentador (DEBE COINCIDIR CON EL CERTIFICADO SELECCIONADO)
ASuministroLRFacturasEmitidas.Cabecera.Titular.NIF = "A84532501"
'Tipo de comunicacion: ' A0 - ALTA ' A1- MODIFICACION ' A4- MODIFICACION REGIMEN VIAJEROS
ASuministroLRFacturasEmitidas.Cabecera.TipoComunicacion = ClaveTipoComunicacionType.A0
Etc. etc.
El problema es que no encuentro la forma de agregar la cabecera:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope .....> <soapenv:Header/>
Ademas en las etiquetas no hay forma de ponerle el namespace sii o siiLR
Que es imprescindible.

La pregunta es por tanto ¿Estoy usando el metodo adecuado y hay pasos que desconozco ¿ o deberia generear el XML manualmente a base de ir concatenado trozos de cadena y despues guardarlo como archivo?

¿Cómo lo has hecho tu?
Gracias de antemano por cualquier info que pueda dar luz al tema
Buenas!
Yo lo he hecho a base de XElements (Estructura XML) y Strings.
Te digo más o menos como lo he hecho (Que supongo que no será la forma más óptima pero es como se me ha ocurrido)

Para poner los prefijos de Sii, SiiLR y demás he usado esto:
public static XNamespace NAMESPACE = @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd";

Para crear los nodos XElement con sus prefijos:
XElement root = new XElement(NAMESPACE + "SuministroLRFacturasEmitidas");

Para poner la cabecera yo he usado esto:
XElement Envelope = new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", @"*schemas.xmlsoap.org/soap/envelope/"),
new XAttribute(XNamespace.Xmlns + "siiLR", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"),
new XAttribute(XNamespace.Xmlns + "sii", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"));

XElement Header = new XElement(soapenv + "Header");
Envelope.Add(Header);

String file = Utilidades.CreateXMLFile(Envelope, i, "Alta Facturas Emitidas");

Mi Utilidades.CreateXMLFile:

XmlTextWriter writer = new XmlTextWriter(archivoPath, Encoding.UTF8); //Con esto de aquí le pones la primera línea esa "<?xml version="1.0" encoding="UTF-8"?>"
writer.WriteStartDocument();
writer.Formatting = Formatting.Indented;
xml.WriteTo(writer);
writer.Flush();
writer.Close();

Espero haberte ayudado.
P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD
Responder Con Cita
  #2  
Antiguo 02-03-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Cita:
Empezado por angelhorse Ver Mensaje
Buenas!
Yo lo he hecho a base de XElements (Estructura XML) y Strings.
Te digo más o menos como lo he hecho (Que supongo que no será la forma más óptima pero es como se me ha ocurrido)

Para poner los prefijos de Sii, SiiLR y demás he usado esto:
public static XNamespace NAMESPACE = @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd";

Para crear los nodos XElement con sus prefijos:
XElement root = new XElement(NAMESPACE + "SuministroLRFacturasEmitidas");

Para poner la cabecera yo he usado esto:
XElement Envelope = new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", @"*schemas.xmlsoap.org/soap/envelope/"),
new XAttribute(XNamespace.Xmlns + "siiLR", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"),
new XAttribute(XNamespace.Xmlns + "sii", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"));

XElement Header = new XElement(soapenv + "Header");
Envelope.Add(Header);

String file = Utilidades.CreateXMLFile(Envelope, i, "Alta Facturas Emitidas");

Mi Utilidades.CreateXMLFile:

XmlTextWriter writer = new XmlTextWriter(archivoPath, Encoding.UTF8); //Con esto de aquí le pones la primera línea esa "<?xml version="1.0" encoding="UTF-8"?>"
writer.WriteStartDocument();
writer.Formatting = Formatting.Indented;
xml.WriteTo(writer);
writer.Flush();
writer.Close();

Espero haberte ayudado.
P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD
Hola angelhorse,
Si, muchas gracias,me ha sido util tu codigo. Yo tenia ya algo parecido hecho con XmlWriter.
De todas formas , me faltaria saber que contiene la variable soapenv, que tu pones en varias partes del codigo, p.e.
Código:
XElement Header = new XElement(soapenv + "Header");
Otra duda, dado que tu generas el xml de esta forma, ¿ como lo envias a AEAT ?, usando un metodo HttpRequest o Serializar y usas las clases generadas mediante wsdl.exe, enviandolo asi

Código:
  resul = proxy.SuministroLRFacturasEmitidas(AsuminstroFacturasEmitidas)
Gracias de nuevo.
Responder Con Cita
  #3  
Antiguo 02-03-2017
paquimd paquimd is offline
Miembro
 
Registrado: feb 2017
Posts: 15
Poder: 0
paquimd Va por buen camino
Cita:
Empezado por jlegido Ver Mensaje
Hola angelhorse,
Si, muchas gracias,me ha sido util tu codigo. Yo tenia ya algo parecido hecho con XmlWriter.
De todas formas , me faltaria saber que contiene la variable soapenv, que tu pones en varias partes del codigo, p.e.
Código:
XElement Header = new XElement(soapenv + "Header");
Otra duda, dado que tu generas el xml de esta forma, ¿ como lo envias a AEAT ?, usando un metodo HttpRequest o Serializar y usas las clases generadas mediante wsdl.exe, enviandolo asi

Código:
  resul = proxy.SuministroLRFacturasEmitidas(AsuminstroFacturasEmitidas)
Gracias de nuevo.
En este último punto es en el que me encuentro yo. Tengo generado el XML, para enviarlo, intento hacerlo como tú:

resul = proxy.SuministroLRFacturasEmitidas(AsuminstroFacturasEmitidas)

pero al serializar me da errores.

Gracias
Responder Con Cita
  #4  
Antiguo 12-03-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Cita:
Empezado por angelhorse Ver Mensaje
Buenas!
Yo lo he hecho a base de XElements (Estructura XML) y Strings.
Te digo más o menos como lo he hecho (Que supongo que no será la forma más óptima pero es como se me ha ocurrido)

Para poner los prefijos de Sii, SiiLR y demás he usado esto:
public static XNamespace NAMESPACE = @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd";

Para crear los nodos XElement con sus prefijos:
XElement root = new XElement(NAMESPACE + "SuministroLRFacturasEmitidas");

Para poner la cabecera yo he usado esto:
XElement Envelope = new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", @"*schemas.xmlsoap.org/soap/envelope/"),
new XAttribute(XNamespace.Xmlns + "siiLR", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"),
new XAttribute(XNamespace.Xmlns + "sii", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"));

XElement Header = new XElement(soapenv + "Header");
Envelope.Add(Header);

String file = Utilidades.CreateXMLFile(Envelope, i, "Alta Facturas Emitidas");

Mi Utilidades.CreateXMLFile:

XmlTextWriter writer = new XmlTextWriter(archivoPath, Encoding.UTF8); //Con esto de aquí le pones la primera línea esa "<?xml version="1.0" encoding="UTF-8"?>"
writer.WriteStartDocument();
writer.Formatting = Formatting.Indented;
xml.WriteTo(writer);
writer.Flush();
writer.Close();

Espero haberte ayudado.
P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD

Hola angelhorse,

Estoy siguiendo un metodo parecido al tuyo, es decir lo hago en VB.Net, pero generando el archivo xml de forma manual (es decir son uso objetos generados al importa la referencia al servicio web).
Bueno el tema es que creo tener todo bien pero estoy en un atasco del que no puedo salir y ando ya desesperado, creo que tu me puedes echar un cable.
Tengo el archivo xml correcto y bien formado y con datos reales
Tengo un certificado (en archivo .pfx) correcto y verificado (he hecho envios de otra forma y funciona)
Al final la empresa ha decidido hacerlo todo sin usar los objetos generados al importar la referencia al servicio web, es decir que no tengo un objeto de tipo SuministroLRFacturasEmitidas con el que hacer las usuales lineas:
Código:
     Dim resul As RespuestaLRFEmitidasType
         resul = proxy.SuministroLRFacturasEmitidas(testC)
lo que uso es un objeto System.Net.HttpWebRequest, con el siguiente codigo

Código:
   Dim req As System.Net.HttpWebRequest
      Dim url As String = "*://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
      'inicializar propiedades request--------------------------------
      req = HttpWebRequest.Create(url)
      req.Headers.Add("SOAP:Action")
      req.ContentType = "text/xml;charset=""utf-8"""
      req.Accept = "text/xml"
      req.Method = "POST"
      Dim soapEnvelopeXml As XmlDocument = New XmlDocument()
      'cargar xml desde archivo
      Dim filename As String = "h:\facturaEmitidaMODEL1_1_1.xml"
      soapEnvelopeXml.Load(filename)

      'certificado---------------------------------------------------
      Dim cert As System.Security.Cryptography.X509Certificates.X509Certificate2
      Dim sRutaCert As String = "H:\Certificado.pfx"
      Dim sClaveCert As String = "xy123"
      cert = New System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCert, sClaveCert)
      req.ClientCertificates.Add(cert)

      'recoger respuesta 1-----------------------------------------
      Dim resp As WebResponse = req.GetResponse()
      Dim reader As StreamReader = New StreamReader(resp.GetResponseStream())
      Dim soapResult As String = reader.ReadToEnd()
Y aqui es donde me quedo totalmente atascado, me da un mensaje super largo, del cual solo posteo lo inicial, que es:

Código:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="*://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[1304].Fin prematuro del archivo. (-1,-1)</faultstring><detail><callstack>XML no válido o mal formado
Pero por mas que repaso y repaso no veo que el xml no sea valido o este mal formado y sobre el “Fin prematuro de archivo” no he encontrado nada de anda en internet.
¿Qué codigo usas tu para enviarlo?

Muchas gracias por tu ayuda
Saludos

P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD[/quote]
Responder Con Cita
  #5  
Antiguo 12-03-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por jlegido Ver Mensaje

Código:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="*://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[1304].Fin prematuro del archivo. (-1,-1)</faultstring><detail><callstack>XML no válido o mal formado
Pero por mas que repaso y repaso no veo que el xml no sea valido o este mal formado y sobre el “Fin prematuro de archivo” no he encontrado nada de anda en internet.
¿Qué codigo usas tu para enviarlo?

Muchas gracias por tu ayuda
Saludos

P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD
Para ver si un XML no está bien formado no hay nada como abrirlo con Firefox, y te indicará la línea y la columna donde está el error. Con otros navegadores no lo sé.

Saludos,

Última edición por CMB fecha: 12-03-2017 a las 22:56:19. Razón: Error ortográfico
Responder Con Cita
  #6  
Antiguo 13-03-2017
robinsondemantu robinsondemantu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 10
Poder: 0
robinsondemantu Va por buen camino
Error controlado

Buenos días.

Gracias por toda la información que habéis ido poniendo. Me ha sido de gran utilidad. A ver si me podéis echar una mano o le ha ocurrido a alguien. El caso es que hago la llamada al método para dar de alta facturas emitidas y la AEAT me devuelve el siguiente error:

Codigo[4114].El titular del certificado debe ser el Titular del libro de Registro, Colaborador Social o Apoderado

Me he puesto en contacto con ellos, pero no me contestan. El caso es que hace poco pusieron un enlace para comprobar la identificación fiscal (por Web y por Servicio Web) y me deja pasar con el certificado.

Alguna idea?

Muchas gracias.
Responder Con Cita
  #7  
Antiguo 13-03-2017
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Las pruebas de envío tienen que hacerse con un certificado que corresponda al titular del envío.
Usa tu propio certificado, pero tendrás que poner como titular tu nombre y NIF.
Como es para pruebas, no tiene mayor relevancia.

Pero lo que no podrás es presentar registros de otro titular diferente, salvo que tengas certificado de colaborador social (asesorías) o seas apoderado.
Lo que no creo que sea tu caso, igual que del resto que andamos por aquí.

Última edición por Nasca fecha: 13-03-2017 a las 09:15:46.
Responder Con Cita
  #8  
Antiguo 13-03-2017
batuzail batuzail is offline
Miembro
 
Registrado: feb 2017
Posts: 57
Poder: 8
batuzail Va por buen camino
Cita:
Empezado por robinsondemantu Ver Mensaje
Buenos días.

Gracias por toda la información que habéis ido poniendo. Me ha sido de gran utilidad. A ver si me podéis echar una mano o le ha ocurrido a alguien. El caso es que hago la llamada al método para dar de alta facturas emitidas y la AEAT me devuelve el siguiente error:

Codigo[4114].El titular del certificado debe ser el Titular del libro de Registro, Colaborador Social o Apoderado

Me he puesto en contacto con ellos, pero no me contestan. El caso es que hace poco pusieron un enlace para comprobar la identificación fiscal (por Web y por Servicio Web) y me deja pasar con el certificado.

Alguna idea?

Muchas gracias.
Hola,
El certificado debe ser el del mismo Cif que el que envias las facturas.
Como lo estas haciendo de pruebas en el cif del emisor pon el mismo que el del certificado y te funcionará.

Saludos
Responder Con Cita
  #9  
Antiguo 13-03-2017
robinsondemantu robinsondemantu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 10
Poder: 0
robinsondemantu Va por buen camino
Cita:
Empezado por batuzail Ver Mensaje
Hola,
El certificado debe ser el del mismo Cif que el que envias las facturas.
Como lo estas haciendo de pruebas en el cif del emisor pon el mismo que el del certificado y te funcionará.

Saludos
Gracias por la respuesta.

Si meto el CIF (he ocultado el válido) en el campo NIF:

_SuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon = "EMPRESA"
_SuministroLRFacturasEmitidas.Cabecera.Titular.NIF = "AXXXXXXXX"
_SuministroLRFacturasEmitidas.RegistroLRFacturasEmitidas(0).IDFactura.IDEmisorFactura.NIF = "AXXXXXXXX"

Me dice "Valor o tipo incorrecto del campo NIF". ¿Es ahí dónde te refieres?


Gracias.
Responder Con Cita
  #10  
Antiguo 13-03-2017
robinsondemantu robinsondemantu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 10
Poder: 0
robinsondemantu Va por buen camino
Conseguido, era por el NIF que venía en el ejemplo en la contraparte. El puesto el CIF donde me indicabas, he cambiado el tipo de factura y no he enviado la contraparte y ha funcionado.

Muchas gracias!! Este foro es un lujazo. Hay muy pocos sitios donde haya información de gente que se está pegando con esto.
Responder Con Cita
  #11  
Antiguo 13-03-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Hola CMB
Gracias por la respuesta.
Uso 3 archivos diferentes, pues no se cual puede ser el bueno para hacienda. Los 3 archivos los he validado en Firefox, en Chrome y en http://W**.freeformatter.com/xml-validator-xsd.html y son correctos, pero me sale siempre el mismo error, ahora es:
Cita:
<env:Envelope>
<env:Body>
<env:Fault>
<faultcode>env:Client</faultcode>
<faultstring>Codigo[1304].No se permite contenido en el prólogo. (1,1)
</faultstring><detail>
LO esoy enviado (en VB.Net obligatoriamente) con HttpWebRequest.Create(url), quiza sea aquí donde esta el error.

Te adjunto los 3 archivos, para que por lo menos me digas cual es el que tu usarias
Y si alguien lo ha hecho de la misma forma que yo o sabe algo sobre este tipo de error, cualquier ayuda sera bienvenida, por que estoy al limite de todo (tiempo y energia)

Muchas gracias
Archivos Adjuntos
Tipo de Archivo: zip alta_factura.zip (2,7 KB, 162 visitas)
Responder Con Cita
  #12  
Antiguo 13-03-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por jlegido Ver Mensaje
Hola CMB
Gracias por la respuesta.
Uso 3 archivos diferentes, pues no se cual puede ser el bueno para hacienda. Los 3 archivos los he validado en Firefox, en Chrome y en http://W**.freeformatter.com/xml-validator-xsd.html y son correctos, pero me sale siempre el mismo error, ahora es:
Muchas gracias
El fichero llamado alta_factura.xml tiene la estructura correcta. Si le pones los NIFs y nombres de verdad debería aceptártelo. Los otros dos no están bien. Entre otras cosas, les faltan los namespaces.

Saludos,
Responder Con Cita
  #13  
Antiguo 13-03-2017
batuzail batuzail is offline
Miembro
 
Registrado: feb 2017
Posts: 57
Poder: 8
batuzail Va por buen camino
Facturas emitidas en C#

Hola,
Varios me lo habéis pedido por privado, lo pongo aqui a disposición de todos, son las clases necesarias para subir facturas emitidas.

Como pasáis el NIF del emisor en facturas Recibidas?????, a mi solo me aparece una propiedad Item me falta una que sea NIF, en emitidas aparece.
LA clase que me genera del WS contiene:

Cita:
public partial class IDFacturaRecibidaTypeIDEmisorFactura
{

private object itemField;

/// <comentarios/>
[System.Xml.Serialization.XmlElementAttribute("IDOtro", typeof(IDOtroType))]
[System.Xml.Serialization.XmlElementAttribute("NIF", typeof(string))]
public object Item
{
get
{
return this.itemField;
}
set
{
this.itemField = value;
}
}
}
Saludos
Archivos Adjuntos
Tipo de Archivo: rar FacturasEmitidas.rar (11,5 KB, 166 visitas)
Responder Con Cita
  #14  
Antiguo 14-03-2017
batuzail batuzail is offline
Miembro
 
Registrado: feb 2017
Posts: 57
Poder: 8
batuzail Va por buen camino
Cita:
Empezado por batuzail Ver Mensaje
Hola,
Varios me lo habéis pedido por privado, lo pongo aqui a disposición de todos, son las clases necesarias para subir facturas emitidas.

Como pasáis el NIF del emisor en facturas Recibidas?????, a mi solo me aparece una propiedad Item me falta una que sea NIF, en emitidas aparece.
LA clase que me genera del WS contiene:



Saludos
He enviado un mail, y sorprendentemente me han respodido al momento, me han pedido el xml y el problema era que el nif del emisor y de la contraparte deben de ser el mismo, pero el error que me mostraba era:

[4102].El XML no cumple el esquema. Falta informar campo obligatorio.: NIF

Seguimos......

Responder Con Cita
  #15  
Antiguo 05-05-2017
IcuScc IcuScc is offline
Registrado
 
Registrado: abr 2017
Posts: 9
Poder: 0
IcuScc Va por buen camino
Cita:
Empezado por batuzail Ver Mensaje
Hola,
Varios me lo habéis pedido por privado, lo pongo aqui a disposición de todos, son las clases necesarias para subir facturas emitidas.

Como pasáis el NIF del emisor en facturas Recibidas?????, a mi solo me aparece una propiedad Item me falta una que sea NIF, en emitidas aparece.
LA clase que me genera del WS contiene:



Saludos

Hola, buenas. Ejemplo para facturas recibidas tienes? lo podrias compartir? El que he hecho yo no funciona. Gracias
Responder Con Cita
  #16  
Antiguo 13-03-2017
vicdeju vicdeju is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 10
Poder: 0
vicdeju Va por buen camino
Cita:
Empezado por jlegido Ver Mensaje
Hola angelhorse,

Estoy siguiendo un metodo parecido al tuyo, es decir lo hago en VB.Net, pero generando el archivo xml de forma manual (es decir son uso objetos generados al importa la referencia al servicio web).
Bueno el tema es que creo tener todo bien pero estoy en un atasco del que no puedo salir y ando ya desesperado, creo que tu me puedes echar un cable.
Tengo el archivo xml correcto y bien formado y con datos reales
Tengo un certificado (en archivo .pfx) correcto y verificado (he hecho envios de otra forma y funciona)
Al final la empresa ha decidido hacerlo todo sin usar los objetos generados al importar la referencia al servicio web, es decir que no tengo un objeto de tipo SuministroLRFacturasEmitidas con el que hacer las usuales lineas:
Código:
     Dim resul As RespuestaLRFEmitidasType
         resul = proxy.SuministroLRFacturasEmitidas(testC)
lo que uso es un objeto System.Net.HttpWebRequest, con el siguiente codigo

Código:
   Dim req As System.Net.HttpWebRequest
      Dim url As String = "*://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
      'inicializar propiedades request--------------------------------
      req = HttpWebRequest.Create(url)
      req.Headers.Add("SOAP:Action")
      req.ContentType = "text/xml;charset=""utf-8"""
      req.Accept = "text/xml"
      req.Method = "POST"
      Dim soapEnvelopeXml As XmlDocument = New XmlDocument()
      'cargar xml desde archivo
      Dim filename As String = "h:\facturaEmitidaMODEL1_1_1.xml"
      soapEnvelopeXml.Load(filename)

      'certificado---------------------------------------------------
      Dim cert As System.Security.Cryptography.X509Certificates.X509Certificate2
      Dim sRutaCert As String = "H:\Certificado.pfx"
      Dim sClaveCert As String = "xy123"
      cert = New System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCert, sClaveCert)
      req.ClientCertificates.Add(cert)

      'recoger respuesta 1-----------------------------------------
      Dim resp As WebResponse = req.GetResponse()
      Dim reader As StreamReader = New StreamReader(resp.GetResponseStream())
      Dim soapResult As String = reader.ReadToEnd()
Y aqui es donde me quedo totalmente atascado, me da un mensaje super largo, del cual solo posteo lo inicial, que es:

Código:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="*://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[1304].Fin prematuro del archivo. (-1,-1)</faultstring><detail><callstack>XML no válido o mal formado
Pero por mas que repaso y repaso no veo que el xml no sea valido o este mal formado y sobre el “Fin prematuro de archivo” no he encontrado nada de anda en internet.
¿Qué codigo usas tu para enviarlo?

Muchas gracias por tu ayuda
Saludos

P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD
[/quote]

Buenas tardes,
He estado utilizando el código que has puesto, porque me parece la mejor solución, utilizando un XML que me he generado yo, también me da error al hacer el envío. Lo que no me queda claro de este código, es en que instrucción se le dice al objeto req, que utilice el soapEnvolveXML como documento de envío.
Un saludo y muchas gracias.
Responder Con Cita
  #17  
Antiguo 13-03-2017
vicdeju vicdeju is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 10
Poder: 0
vicdeju Va por buen camino
Cita:
Empezado por jlegido Ver Mensaje
Hola angelhorse,

Estoy siguiendo un metodo parecido al tuyo, es decir lo hago en VB.Net, pero generando el archivo xml de forma manual (es decir son uso objetos generados al importa la referencia al servicio web).
Bueno el tema es que creo tener todo bien pero estoy en un atasco del que no puedo salir y ando ya desesperado, creo que tu me puedes echar un cable.
Tengo el archivo xml correcto y bien formado y con datos reales
Tengo un certificado (en archivo .pfx) correcto y verificado (he hecho envios de otra forma y funciona)
Al final la empresa ha decidido hacerlo todo sin usar los objetos generados al importar la referencia al servicio web, es decir que no tengo un objeto de tipo SuministroLRFacturasEmitidas con el que hacer las usuales lineas:
Código:
     Dim resul As RespuestaLRFEmitidasType
         resul = proxy.SuministroLRFacturasEmitidas(testC)
lo que uso es un objeto System.Net.HttpWebRequest, con el siguiente codigo

Código:
   Dim req As System.Net.HttpWebRequest
      Dim url As String = "*://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
      'inicializar propiedades request--------------------------------
      req = HttpWebRequest.Create(url)
      req.Headers.Add("SOAP:Action")
      req.ContentType = "text/xml;charset=""utf-8"""
      req.Accept = "text/xml"
      req.Method = "POST"
      Dim soapEnvelopeXml As XmlDocument = New XmlDocument()
      'cargar xml desde archivo
      Dim filename As String = "h:\facturaEmitidaMODEL1_1_1.xml"
      soapEnvelopeXml.Load(filename)

      'certificado---------------------------------------------------
      Dim cert As System.Security.Cryptography.X509Certificates.X509Certificate2
      Dim sRutaCert As String = "H:\Certificado.pfx"
      Dim sClaveCert As String = "xy123"
      cert = New System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCert, sClaveCert)
      req.ClientCertificates.Add(cert)

      'recoger respuesta 1-----------------------------------------
      Dim resp As WebResponse = req.GetResponse()
      Dim reader As StreamReader = New StreamReader(resp.GetResponseStream())
      Dim soapResult As String = reader.ReadToEnd()
Y aqui es donde me quedo totalmente atascado, me da un mensaje super largo, del cual solo posteo lo inicial, que es:

Código:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="*://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[1304].Fin prematuro del archivo. (-1,-1)</faultstring><detail><callstack>XML no válido o mal formado
Pero por mas que repaso y repaso no veo que el xml no sea valido o este mal formado y sobre el “Fin prematuro de archivo” no he encontrado nada de anda en internet.
¿Qué codigo usas tu para enviarlo?

Muchas gracias por tu ayuda
Saludos

P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD
[/quote]

Buenas tardes, tienes que añadir estas líneas
Dim NewStream As Stream = req.GetRequestStream()
soapEnvelopeXml.Save(NewStream)


Antes del getresponse

Asi me ha funcionado correctamente.

Un saludo
Responder Con Cita
  #18  
Antiguo 13-03-2017
JSBB_Z JSBB_Z is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 6
Poder: 0
JSBB_Z Va por buen camino
Generar xml

Hola vicdeju, yo también estoy siguiendo ese mismo código en VB.NET, pero me falta crear un fichero xml que sea correcto para proceder al envío. Podrías indicarme como lo generas?

Gracias y un saludo
Responder Con Cita
  #19  
Antiguo 05-05-2017
IcuScc IcuScc is offline
Registrado
 
Registrado: abr 2017
Posts: 9
Poder: 0
IcuScc Va por buen camino
Smile

Buenas tardes, tienes que añadir estas líneas
Dim NewStream As Stream = req.GetRequestStream()
soapEnvelopeXml.Save(NewStream)


Antes del getresponse

Asi me ha funcionado correctamente.

Un saludo[/quote]


Gracias. Si así funciona bien....
Responder Con Cita
  #20  
Antiguo 21-03-2017
jonortsal jonortsal is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 10
Poder: 0
jonortsal Va por buen camino
Cita:
Empezado por jlegido Ver Mensaje
Hola angelhorse,

Estoy siguiendo un metodo parecido al tuyo, es decir lo hago en VB.Net, pero generando el archivo xml de forma manual (es decir son uso objetos generados al importa la referencia al servicio web).
Bueno el tema es que creo tener todo bien pero estoy en un atasco del que no puedo salir y ando ya desesperado, creo que tu me puedes echar un cable.
Tengo el archivo xml correcto y bien formado y con datos reales
Tengo un certificado (en archivo .pfx) correcto y verificado (he hecho envios de otra forma y funciona)
Al final la empresa ha decidido hacerlo todo sin usar los objetos generados al importar la referencia al servicio web, es decir que no tengo un objeto de tipo SuministroLRFacturasEmitidas con el que hacer las usuales lineas:
Código:
     Dim resul As RespuestaLRFEmitidasType
         resul = proxy.SuministroLRFacturasEmitidas(testC)
lo que uso es un objeto System.Net.HttpWebRequest, con el siguiente codigo

Código:
   Dim req As System.Net.HttpWebRequest
      Dim url As String = "*://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
      'inicializar propiedades request--------------------------------
      req = HttpWebRequest.Create(url)
      req.Headers.Add("SOAP:Action")
      req.ContentType = "text/xml;charset=""utf-8"""
      req.Accept = "text/xml"
      req.Method = "POST"
      Dim soapEnvelopeXml As XmlDocument = New XmlDocument()
      'cargar xml desde archivo
      Dim filename As String = "h:\facturaEmitidaMODEL1_1_1.xml"
      soapEnvelopeXml.Load(filename)

      'certificado---------------------------------------------------
      Dim cert As System.Security.Cryptography.X509Certificates.X509Certificate2
      Dim sRutaCert As String = "H:\Certificado.pfx"
      Dim sClaveCert As String = "xy123"
      cert = New System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCert, sClaveCert)
      req.ClientCertificates.Add(cert)

      'recoger respuesta 1-----------------------------------------
      Dim resp As WebResponse = req.GetResponse()
      Dim reader As StreamReader = New StreamReader(resp.GetResponseStream())
      Dim soapResult As String = reader.ReadToEnd()
Y aqui es donde me quedo totalmente atascado, me da un mensaje super largo, del cual solo posteo lo inicial, que es:

Código:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="*://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[1304].Fin prematuro del archivo. (-1,-1)</faultstring><detail><callstack>XML no válido o mal formado
Pero por mas que repaso y repaso no veo que el xml no sea valido o este mal formado y sobre el “Fin prematuro de archivo” no he encontrado nada de anda en internet.
¿Qué codigo usas tu para enviarlo?

Muchas gracias por tu ayuda
Saludos

P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD
[/quote]

Yo he conseguido que funciones con tu código, pero me gustaría capturar el SOAP REQUEST y el SOAP RESPONSE. ¿Qué modificación tendría que hacer en el código?
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
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4170 Hace 1 Semana 17:29:05
AEAT envio de datos vía Webservice problemas con WSDL CelsoO Internet 11 09-10-2019 20:03:41
webService Soap de la Administración Digital Española notific@ apicito Internet 3 31-01-2017 11:25:28
Error en Webservice funcion envio de sms webmasterplc Delphi para la web 5 25-07-2013 20:10:29
Problemas con envío de XML a un WebService davidvamo Internet 1 13-02-2007 15:49:20


La franja horaria es GMT +2. Ahora son las 23:13:20.


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