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 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
  #2  
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
  #3  
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
  #4  
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
  #5  
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
  #6  
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
  #7  
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
  #8  
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
  #9  
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
  #10  
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
  #11  
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
  #12  
Antiguo 14-03-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por batuzail Ver Mensaje
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......
Es que si lo piensas un poco, el emisor de una factura recibida siempre coincide con la contraparte. A diferencia de las facturas expedidas, en que el emisor es el que manda el XML. Yo también caí en la trampa
Responder Con Cita
  #13  
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
  #14  
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
  #15  
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
  #16  
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
  #17  
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
  #18  
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
  #19  
Antiguo 12-06-2017
jordimmcc jordimmcc is offline
Registrado
NULL
 
Registrado: may 2017
Posts: 2
Poder: 0
jordimmcc 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 jlejido, a mi me ocurre lo mismo, ¿has podido resolver el problema?

Un saludo.
Responder Con Cita
  #20  
Antiguo 12-06-2017
Avatar de mrobles
mrobles mrobles is offline
Miembro
NULL
 
Registrado: may 2017
Posts: 115
Poder: 8
mrobles Va por buen camino
Ando usando para validar los NIF las siguientes paginas, pero creo que como comentaron esta mañana, me esta dando errores los caracteres "extraños" como 'º', 'ª', '/', 'ñ' (no se cual realmente). ¿Alguien sabe el listado de caracteres no validos?
https://www1.agenciatributaria.gob.e.../ws/VNifV1SOAP (webservice)
https://www1.agenciatributaria.gob.e...BUGC-JDIT/Cnec (validar CSV)
http://ec.europa.eu/taxation_customs/vies/ (Validar externos)
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 2 Semanas 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 21:29:13.


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