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
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
|