Ver Mensaje Individual
  #610  
Antiguo 13-05-2021
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 143
Reputación: 4
rci Va por buen camino
Hola, gracias por las respuestas bilbur y Neftali


Pues sí que va a ser eso de los acentos... al leer vuestras respuestas he revisado la factura que me daba ese error y he visto que en la dirección del cliente había un acento "ú".
He hecho otra factura exactamente igual pero poniendo la letra sin acento y ya no ha dado el error de la firma.


Lo que no acabo de ver es como solucionarlo porque ya estoy haciendo todo lo que proponéis (creo).
1. Al crear el fichero TicketBAI y guardarlo en disco lo hago en UTF8:


Código:
     var encoding = System.Text.Encoding.UTF8;
     FileMgr.Save(Path.Combine(filePath, fileName), xmltbai, encoding, false);
2. Al leer el fichero xml de disco para firmarlo le indico que es UTF8, después de firmar al salvar el xml firmado a disco también:


Código:
     XmlWriterSettings settings = new XmlWriterSettings();
     settings.Encoding = new UTF8Encoding();
     using (var writer = XmlWriter.Create(fileName, settings))
     {
           this.Document.Save(writer);
      }
3. Al leer el fichero xml firmado de disco para enviarlo también le indico UTF8:




Código:
     using (StreamReader sr = new StreamReader(filePath, Encoding.UTF8))
    {
           string content = sr.ReadToEnd();
           return content;
     }
4. Finalmente para enviar también indico UTF8



Código:
   var encoding = Encoding.UTF8;
    byte[] contentBytes = encoding.GetBytes(content);

    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    httpWebRequest.AllowAutoRedirect = true;
    httpWebRequest.ClientCertificates.Add(certificate);
    httpWebRequest.Method = "POST";
    httpWebRequest.ContentType = "application/xml";
    httpWebRequest.ContentLength = contentBytes.Length;

    var postStream = httpWebRequest.GetRequestStream();
    postStream.Write(contentBytes, 0, contentBytes.Length);
    postStream.Flush();
    postStream.Close();
De todas formas si hay un acento en el XML antes de firmar, da el error de verificación de la firma.

He enviado correos con los dos ficheros y la dos respuestas al correo de consultas técnicas de Gipuzkoa pero... deben estar colapsados porque hace mucho que no me contestan, creo que llevan más de 2 semanas de retraso en las respuestas T_T


También he escrito a Araba preguntando por su entorno de pruebas y me han dicho que lo están desarrollando y que tiene previsto que para septiembre estará operativo :'(


Bueno voy a seguir investigando.


Ya sé que el foro es de Delphi y mi código es c# .net pero bueno, si alguien me puede dar otro consejo lo agradeceré.


Muchas gracias!







Cita:
Empezado por bilbur Ver Mensaje
En las direcciones que no puedes escribir es posible que tengas acentos en "Política de firma..", en direcciones URI
Elimina los acentos en el xml previo a la firma y también en el firmador que utilices

Espero que sea eso
Responder Con Cita