ARBA ERROR INESPERADO

1,439 views
Skip to first unread message

Alejandro

unread,
Mar 5, 2023, 12:31:05 PM3/5/23
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT

Hola, Tratando de consultar las alicuotas en ARBA solo obtengo

ERROR INESPERADO Tipo: AUTENTICACION. Reportar  al Sector Seguridad Adjunto request y response segun Fiddler

El user/pass en uso estan ok (esto 'mismo' desde Postman anda) ¿Alguna idea? Gracias, ----- POST https://dfe.arba.gov.ar/DomicilioElectronico/SeguridadCliente/dfeServicioConsulta.do HTTP/1.1

Content-Type: multipart/form-data; boundary="7cefe82a-bba7-47c4-b043-b13b54770750"

Host: dfe.arba.gov.ar

Content-Length: 707

Connection: Close


--7cefe82a-bba7-47c4-b043-b13b54770750

Content-Disposition: form-data; name="user"


30xxxxxxxxx

--7cefe82a-bba7-47c4-b043-b13b54770750

Content-Disposition: form-data; name="password"


xxxxxxxx

--7cefe82a-bba7-47c4-b043-b13b54770750

Content-Disposition: form-data; name="file"; filename="DFEServicioConsulta_e6ed7ceacf1f572d0675044880e49a16.xml"

Content-Type: text/xml


<CONSULTA-ALICUOTA><fechaDesde>20230301</fechaDesde><fechaHasta>20230331</fechaHasta><cantidadContribuyentes>1</cantidadContribuyentes><contribuyentes class="list"><contribuyente><cuitContribuyente>20039017599</cuitContribuyente></contribuyente></contribuyentes></CONSULTA-ALICUOTA>

--7cefe82a-bba7-47c4-b043-b13b54770750--


---------


​​HTTP/1.1 200 OK

X-Powered-By: Servlet/3.1

Content-Type: text/xml;charset=ISO-8859-1

Content-Disposition: attachment; filename="DFERespuesta.xml"

Content-Language: en-US

Set-Cookie: JSESSIONID=0000gbU4vdlVCMf0-NoOZfShDJH:-1; Path=/; HttpOnly

Transfer-Encoding: chunked

Connection: Close

Date: Sat, 04 Mar 2023 15:36:03 GMT

Expires: Thu, 01 Dec 1994 16:00:00 GMT

Cache-Control: no-cache="set-cookie, set-cookie2"


114

<?xml version='1.0' encoding='ISO-8859-1'?><DFEError>

  <tipoError>ERROR INESPERADO</tipoError>

  <codigoError>01</codigoError>

  <mensajeError>&lt;![CDATA[[Número de Transacción: 70139216]. Tipo: AUTENTICACION. Reportar  al Sector Seguridad.]]/&gt;</mensajeError>

</DFEError>

0


Katherine Zaoral

unread,
Sep 27, 2023, 9:02:07 PM9/27/23
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola Alejandro como estas?
Al final se resolvio el error?
A que se debia el error codigo 1 error inesperado?

Alejandro J. Kwiatkowski

unread,
Oct 2, 2023, 2:03:45 PM10/2/23
to pyaf...@googlegroups.com
No, sigue dando...

--
Proyecto PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT:
http://www.pyafipws.com.ar/ - http://www.github.com/reingart/pyafipws - http://www.sistemasagiles.com.ar/
---
Has recibido este mensaje porque estás suscrito a un tema del grupo "PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/pyafipws/UysRJqKGrjI/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a pyafipws+u...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/pyafipws/5b9f791e-d0d6-481d-bf57-d5830b8c65f3n%40googlegroups.com.


--



Diego Spinedi

unread,
Mar 1, 2024, 12:54:49 PM3/1/24
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Buenas tardes, 
Alguno pudo resolver este problema?
Me pasa que desde Postman me funciona, pero al hacer un post desde c# me da ese maldito "Error" inesperado ..
Les paso mi codigo...creo no estar haciendo nada raro...pero si ven algo me ayudan?
using var client = new HttpClient();
            var values = new[]
            {
               new KeyValuePair<string,string>("user","XXXXXXXXXX"),
               new KeyValuePair<string,string>("password","XXXXXXXXX"),
            };
            using var content = new MultipartFormDataContent();
            foreach (var val in values)
            {
                content.Add(new StringContent(val.Value), val.Key);
            }

            var filestream = System.IO.File.OpenRead($"{this._hostenv.WebRootPath}\\Documents\\" + cFileName);

          
            content.Add(new StreamContent(filestream),"file",cFileName);
            var requestUri = new Uri("https://dfe.arba.gov.ar/DomicilioElectronico/SeguridadCliente/dfeServicioConsulta.do");
            client.BaseAddress = requestUri;
             var result = client.PostAsync("", content).Result;
           
           
            string resultContent = await result.Content.ReadAsStringAsync();
           
            XDocument incomingXml = XDocument.Load(resultContent);

y el error que me da:

Respuesta:

<?xml version='1.0' encoding='ISO-8859-1'?><DFEError>
  <tipoError>ERROR INESPERADO</tipoError>
  <codigoError>01</codigoError>
  <mensajeError>&lt;![CDATA[[Número de Transacción: 86396170]. Tipo: AUTENTICACION. Reportar  al Sector Seguridad.]]/&gt;</mensajeError>
</DFEError>

Rolando Daniel Barrueco

unread,
Apr 1, 2024, 7:31:57 PM4/1/24
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola, no sé si ya pudieron resolver este problema, pero les paso la forma que encontré para evitarlo.

Luego de infinidad de pruebas, logré solucionarlo quitando las comillas en el parámetro boundary, del header Content-Type.

Con el siguiente header se produce el error:

    Content-Type: multipart/form-data; boundary="----WebKitFormBoundary15e2897bc357434b"

Y al quitarle las comillas a boundary funcionó correctamente:

    Content-Type: multipart/form-data; boundary=----WebKitFormBoundary15e2897bc357434b

A continuación les paso el código C# completo. La idea fue lograr que el request fuera lo más parecido posible al que se envía desde un form html (que sí funcionaba), y por eso es probable que haya cosas redundantes o innecesarias.

pFileName: es el nombre del archivo con el hash concatenado.
pContent: es el fuente xml del archivo a enviar (no es el path al archivo).

La función devuelve el xml de la respuesta del servicio.

        private async Task<string> InvokeDfeServicioConsulta(string pFileName, string pContent) {
            MemoryStream wMemoryStream = null;
            MultipartFormDataContent wMultipartContent = null;
            HttpResponseMessage wDfeServicioConsultaResponse = null;
            HttpClient wHttpClient = null;
            try {
                wMemoryStream = new MemoryStream(clsLibCommonFunctions.StrToUtfByteArray(pContent));

                StringContent wUserContent = new StringContent(AppContext.ArbaDfeUser);
                StringContent wPasswordContent = new StringContent(AppContext.ArbaDfePassword);
                StreamContent wXmlFileContent = new StreamContent(wMemoryStream);

                //Se customiza el boundary.
                string wBoundary = "----WebKitFormBoundary" + Guid.NewGuid().ToString("N").Substring(0, 16);

                //Se construye wMultipartContent informando el boundary.
                //Luego, se agregan comillas explícitamente para que se envíen en el request.
                wMultipartContent = new MultipartFormDataContent(wBoundary) {
                    { wUserContent, "\"user\"" },
                    { wPasswordContent, "\"password\"" },
                    { wXmlFileContent, "\"file\"", "\"" + pFileName + "\"" }
                };

                //Se regenera el boundary, para quitar las comillas y evitar un error en el servicio.
                //Es necesario que el boundary coincida con en informado en el constructor.
                wMultipartContent.Headers.ContentType.Parameters.Clear();
                wMultipartContent.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("boundary", wBoundary));

                //Se eliminan los headers innecesarios.
                //Debe hacerse luego de instanciar wMultipartContent.
                wUserContent.Headers.ContentType = null;
                wPasswordContent.Headers.ContentType = null;
                wXmlFileContent.Headers.ContentDisposition.FileNameStar = null;

                //Se agrega el content type del archivo.
                //Debe hacerse luego de instanciar wMultipartContent.
                MediaTypeHeaderValue wXmlFileContentType = new MediaTypeHeaderValue("text/xml");
                //wXmlFileContentType.Parameters.Add(new NameValueHeaderValue("charset", "UTF-8"));
                wXmlFileContent.Headers.ContentType = wXmlFileContentType;

                HttpClientHandler wHandler = new HttpClientHandler {
                    SslProtocols = SslProtocols.Tls12,
                    AllowAutoRedirect = true,
                    UseCookies = true,
                    UseProxy = false,
                    ClientCertificateOptions = ClientCertificateOption.Automatic
                };

                wHttpClient = new HttpClient(wHandler) {
                    Timeout = TimeSpan.FromSeconds(10)
                };

                //Agregado de headers al request, para homologar el request del browser
                HttpRequestHeaders wHttpRequestHeaders = wHttpClient.DefaultRequestHeaders;

                wHttpRequestHeaders.Accept.Clear();
                wHttpRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*", 0.8));

                wHttpRequestHeaders.AcceptEncoding.Clear();
                wHttpRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
                wHttpRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
                wHttpRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("br"));
                wHttpRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("zstd"));

                wHttpRequestHeaders.AcceptLanguage.Clear();
                wHttpRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("es"));

                wHttpRequestHeaders.CacheControl = new CacheControlHeaderValue {
                    NoCache = true
                };

                wHttpRequestHeaders.Pragma.Clear();
                wHttpRequestHeaders.Pragma.Add(new NameValueHeaderValue("no-cache"));

                wHttpRequestHeaders.UserAgent.Clear();
                wHttpRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Mozilla", "5.0"));
                wHttpRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("(Windows NT 10.0; Win64; x64)"));
                wHttpRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("AppleWebKit", "537.36"));
                wHttpRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("(KHTML, like Gecko)"));
                wHttpRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Chrome", "123.0.0.0"));
                wHttpRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Safari", "537.36"));

                //Adecuación de headers del request, para homologar el request del browser
                wHttpRequestHeaders.ExpectContinue = false;
                wHttpRequestHeaders.ConnectionClose = false;

                wDfeServicioConsultaResponse = await wHttpClient.PostAsync(AppContext.ArbaDfeUrl, wMultipartContent);
            } finally {
                if (wMemoryStream != null) {
                    wMemoryStream.Dispose();
                }
                if (wMultipartContent != null) {
                    wMultipartContent.Dispose();
                }
                if (wHttpClient != null) {
                    wHttpClient.Dispose();
                }
            }
            if (wDfeServicioConsultaResponse.IsSuccessStatusCode && wDfeServicioConsultaResponse.Content != null) {
                try {
                    return await wDfeServicioConsultaResponse.Content.ReadAsStringAsync();
                } catch (HttpRequestException) {
                    // Non success
                    throw;
                } catch (NotSupportedException) {
                    // When content type is not valid
                    throw;
                }
            } else {
                throw new clsExcBaseException("El servicio devolvió un error o una respuesta vacía.");
            }
        }

Saludos.

Reply all
Reply to author
Forward
0 new messages