Ir para conteúdo
  • Cadastre-se

dev botao

NFSEx - Response XML com caracteres escape para "<" e "?>"


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 757 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá,

Atualizei o pacote AcbrNFSeX no dia 18/02/2022 e começou a apresentar um problema na interação com o servidor. 

O problema é que no response Soap que contem o XML gerado está constando caracteres escape para o "<" e "?>" com isso o ACBr retorna um erro ao receber o response!

Isso acontece em qualquer consulta ou envio da NFSe.

Segue um trecho do envelope do response:

<?xml version=''1.0'' encoding=''UTF-8''?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:consultarNfseServicoPrestadoResponse xmlns:ns2="http://nfse.abrasf.org.br">
      AQUI>>>      <return>&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;&lt;ConsultarNfseResposta&gt;&lt;ListaNfse&gt;&lt;CompNfse&gt;&lt;Nfse&gt;&lt;InfNfse&gt;&lt;Numero&gt;47&lt;/Numero&gt;&lt;CodigoVerificacao&gt;EIUR-

  ...................
        </ns2:consultarNfseServicoPrestadoResponse>
    </S:Body>
</S:Envelope>

 

Para auxílio eu anexei o arquivo gerado na recepção do webservice.

 

Grato no aguardo.

 

resp_soap_com _Escape.xml

Faberson Ferrasi - Ferrasi - Soluções em TI - [email protected]

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Bom dia Emdri,

Favor atualizar os fontes, reinstalar o ACBr e faça novos testes.

Observação: Procure sempre informar a cidade e o provedor, desta forma fica mais fácil saber onde devemos analisar e fazer as devidas correções.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Italo,

Fiz a atualização conforme indicado mas ainda continua com o mesmo problema, com os caracteres escape, segue um trecho do response:

Cidade: Bauru-SP

Emissão/Consulta de NFSe com o ACBRNFSeX, método utilizado: ConsultarNFSeServicoPrestadoPorNumero 

<?xml version=''1.0'' encoding=''UTF-8''?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:consultarNfseServicoPrestadoResponse xmlns:ns2="http://nfse.abrasf.org.br">
         AQUI>>>>>   <return>&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;&lt;ConsultarNfseResposta&gt;&lt;ListaNfse&gt;&lt;Co.......

Segue anexo o arquivo com o response completo.

Fico no aguardo.

Um abraço.

Faberson Ferrasi

response_soap_nfse_Bauru_280222.xml

Faberson Ferrasi - Ferrasi - Soluções em TI - [email protected]

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Faberson,

Muito estranho pois após executar o TratarXmlRetornado que se encontra na unit SilTecnologia.Provider o response estaria corrigido, logo não deveria ocorrer esse erro.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Italo,

O AcbrNFSEX lança a Exception("StartTag: invalid element name'#$A") na linha da function: "ExtrairRetorno" conforme segue abaixo, explorei o valor da variável "xRetrorno" e criei um arquivo que segue anexo.

Cidade: Bauru-SP

Emissão/Consulta de NFSe com o ACBRNFSeX, método utilizado: ConsultarNFSeServicoPrestadoPorNumero 

Unit: ACBrNFSeXWebserviceBase

 

function TACBrNFSeXWebservice.ExtrairRetorno(const ARetorno: string;
  responseTag: array of string): string;
var
  Document: TACBrXmlDocument;
  ANode: TACBrXmlNode;
  I: Integer;
  xRetorno: string;
begin
  Result := '';

  xRetorno := TratarXmlRetornado(ARetorno);

  if (Length(responseTag) = 0) then
  begin
    Result := xRetorno;
    Exit;
  end;

  Document := TACBrXmlDocument.Create;
  try
    EXCEPTION AQUI >>> Document.LoadFromXml(xRetorno);

    VerificarErroNoRetorno(Document);
    ANode := Document.Root;

    if ANode.Name <> 'a' then
    begin
      for I := Low(responseTag) to High(responseTag) do
      begin
        if ANode <> nil then
          ANode := ANode.Childrens.FindAnyNs(responseTag[I]);
      end;

      if ANode = nil then
        ANode := Document.Root.Childrens.FindAnyNs(responseTag[0]);
    end;

    if ANode <> nil then
    begin
      if FUseOuterXml then
        Result := ANode.OuterXml
      else
        Result := ANode.Content;
    end;
  finally
    Document.Free;
  end;
end;

 

Grato, no aguardo.

Conteudo_xRetorno.xml

Faberson Ferrasi - Ferrasi - Soluções em TI - [email protected]

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Faberson,

Faça um teste com a Unit em anexo.

SilTecnologia.Provider.pas

Após atualizar a unit, reinstale o ACBr e por fim compile a aplicação com a opção Build.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Caro Italo,

Ocorreu a mesma exceção(StartTag: invalid element name'#$A), mesmo após atualizar a unit indicada, reinstalar o ACBR e compilar com o Build. 

A exception acontece exatamente na mesma linha da mesma function conforme indicado anteriormente >> Document.LoadFromXml(xRetorno); 

Segue anexo o conteúdo da variável xRetorno.

Grato.

 

PS:

A única alteração na Unit que observei é a linha apontada abaixo:

function TACBrNFSeXWebserviceSilTecnologia203.TratarXmlRetornado(
  const aXML: string): string;
begin
  Result := inherited TratarXmlRetornado(aXML);

  Result := ParseText(AnsiString(Result), True, False);
  Result := RemoverDeclaracaoXML(Result);
  AQUI  >>>> Result := RemoverIdentacao(Result);
  Result := RemoverCaracteresDesnecessarios(Result);
end;

conteudo_xRetorno_280222_1448.xml

Faberson Ferrasi - Ferrasi - Soluções em TI - [email protected]

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Faberson,

Preciso do XML (soap) salvo pelo componente desse retorno, pois acredito ter encontrado o problema.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Faberson,

Atualize os fontes, reinstale o ACBr e compile a aplicação com a opção Built, por fim faça novos testes.

  • Obrigado 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Administradores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 757 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.