sefazEnviaLote ===> prever Bad Request e rever calculo body.length

4 views
Skip to first unread message

Marco Antonio De Filippis

unread,
Nov 30, 2025, 4:52:35 PM (8 days ago) Nov 30
to Node Sped NFe
boa tarde,

Estava enfrentando um erro que o componente devolve uma resposta vazia, para Bad Request, então  previ res.statusCode !== 200

            ...(await __classPrivateFieldGet(this, _Tools_instances, "m", _Tools_certTools).call(this)),
          },
          (res) => {
            let data = "";

            // eu ///////////////////////////////////////////////
            console.log(`[nfe] STATUS: ${res.statusCode}`);
            console.log(`[nfe] HEADERS: ${JSON.stringify(res.headers)}`);

            if (res.statusCode !== 200) {
              let errorMsg = `Request Failed. Status Code: ${res.statusCode} ${res.statusMessage}`;
              console.error(`[nfe] ERRO: ${errorMsg}`);

              res.on("data", (chunk) => {
                data += chunk;
              });

              res.on("end", () => {
                console.log(`[nfe] CORPO DO ERRO: ${data}`);
                const err = new Error(`${errorMsg} - Body: ${data}`);
                // Anexa info útil no objeto de erro
                err.statusCode = res.statusCode;
                err.statusMessage = res.statusMessage;
                err.responseBody = data;
                reject(err);
              });

              return;
            }

            res.on("data", (chunk) => {
              data += chunk;
            });


Percebi que no meu caso se referia ao tamanho do corpo do post 
então previ ..  const body = Buffer.from(xmlLote, "utf8");


      let xmlLote = await this.json2xml(jsonXmlLote);
      const body = Buffer.from(xmlLote, "utf8");
      try {
        let tempUF = urlEventos(__classPrivateFieldGet(this, _Tools_config, "f").UF, __classPrivateFieldGet(this, _Tools_config, "f").versao);
        const req = https.request(
          tempUF[`mod${__classPrivateFieldGet(this, _Tools_config, "f").mod}`][
            __classPrivateFieldGet(this, _Tools_config, "f").tpAmb == 1 ? "producao" : "homologacao"
          ].NFeAutorizacao,
          {
            ...{
              method: "POST",
              headers: {
                "Content-Type": "application/soap+xml; charset=utf-8",
                // 'Content-Length': xmlLote.length,
                // eu ///////////////////////////////////////////////
                "Content-Length": body.length,
              },
              rejectUnauthorized: false,
            },

Esta são minhas sugestões .

obrigado

Reply all
Reply to author
Forward
0 new messages