Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao enviar requisição GNRE


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

Recommended Posts

Postado (editado)

Olá, estou enfrentando dificuldades com erros que estão ocorrendo nas versões mais recentes no Projeto ACBR.

Estou recebendo erros de comunicação, estou com a versão do dia 24/01/2020  e está funcionando normalmente, porém se eu atualizar para a versão mais recente no caso em questão é do dia 30/04/2020, passo a ter erros de conexão com a SEFAZ, tanto na Nfe quanto em GNRE ou CTE.

Obs: Compilado em 32 bits no Delphi Rio.

 

Aparentemente a mensagem do erro está pegando lixo de memória.

Segue StackTrace do erro:

Erro: 
Falha Enviando a Requisição. Erro: 0 - 2 0 1 0 5 7 7                        0 1 5 1 0 2 0 1 0 5 7             1 0 0 1 0 2   R                                                      
                                                                                                                                                          1 0 0 1 0 2       
                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ÿò   q     u s   L I M I T   1   )
StackTrace: 0080e971 TransmissoresSefaz.exe ACBrDFe                                  627 TACBrDFe.GerarException
00815fe7 TransmissoresSefaz.exe ACBrDFeWebService                        528 TDFeWebService.GerarException
00814acd TransmissoresSefaz.exe ACBrDFeWebService                        218 TDFeWebService.Executar
771c012e ntdll.dll                                                           KiUserExceptionDispatcher
007d9700 TransmissoresSefaz.exe ACBrDFeHttpWinApi                         95 TDFeHttpWinHttp.Execute
007de8b0 TransmissoresSefaz.exe ACBrDFeSSL                              1062 TDFeSSLHttpClass.HTTPMethod
007de6dd TransmissoresSefaz.exe ACBrDFeSSL                              1045 TDFeSSLHttpClass.Enviar
007dff0e TransmissoresSefaz.exe ACBrDFeSSL                              1412 TDFeSSL.Enviar
008158d6 TransmissoresSefaz.exe ACBrDFeWebService                        412 TDFeWebService.EnviarDados
00814a42 TransmissoresSefaz.exe ACBrDFeWebService                        206 TDFeWebService.Executar
01326709 TransmissoresSefaz.exe rp.gnre.business.envGnre                 349 TGnreService.send
01326f64 TransmissoresSefaz.exe rp.app.business.task.envioGnre            54 TEnvioGnreTask.sendLocal
0132721b TransmissoresSefaz.exe rp.app.business.task.envioGnre            92 TEnvioGnreTask.executeBatch
013276cb TransmissoresSefaz.exe rp.app.business.task.envioGnre           139 TEnvioGnreTask.process
01327ca6 TransmissoresSefaz.exe rp.app.business.task.envioGnre           212 TEnvioGnreTask.execute
011a0332 TransmissoresSefaz.exe rp.core.app.controller.baseTaskManager   431 TBaseTaskManager.processTask
011a12eb TransmissoresSefaz.exe rp.core.app.controller.baseTaskManager   633 TBaseTaskManager.run
01253909 TransmissoresSefaz.exe rp.core.app.main                         162 TTransmissoresSefazRP.runner
01164e97 TransmissoresSefaz.exe rp.core.app.runnerThread                  33 TRunnerThread.Execute
00489579 TransmissoresSefaz.exe System.Classes                         15040 ThreadProc
0040b738 TransmissoresSefaz.exe System                                 24940 ThreadWrapper

76aa343b kernel32.dll                                                        BaseThreadInitThunk

 

image.thumb.png.1d5e1c569c9e267c178ea811c808097b.png

 

 

 

 

Editado por RP INFO Desenvolvimento
  • Administradores
Postado

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Bom dia.

Você reproduz o mesmo no demo?

Quais são as configurações do componente?

Att.

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

Postado
20 minutos atrás, Juliana Tamizou disse:

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Bom dia.

Você reproduz o mesmo no demo?

Quais são as configurações do componente?

Att.

Olá, não testei com a demo, como eu falei com a versão do mês de janeiro funciona, porém quando atualizo para a versão que está no SVN, passo a ter estes erros.

Obs: Estou emitindo em produção, para a UF "GO".

segue código da configuração do componente:

class function TAcbrUtilGnre.buildAcbr(context: TAppContext): TACBrGNRE;
var
  acbrGnre: TACBrGNRE;
begin
  acbrGnre:=TACBrGNRE.Create(nil);
  with acbrGnre.Configuracoes.Geral do begin
    SSLLib                := libWinCrypt;
    SSLCryptLib           := cryWinCrypt;
    SSLHttpLib            := httpWinHttp;
    SSLXmlSignLib         := xsMsXml;
  
    ExibirErroSchema := true;
    RetirarAcentos   := true;
    FormatoAlerta    := '';
    FormaEmissao     := teNormal;
    VersaoDF         := pgnreConversao.ve100;
    Salvar           := false
  end;

  acbrGnre.SSL.SSLType:=LT_TLSv1_2;
  acbrGnre.Configuracoes.WebServices.SSLType:=LT_TLSv1_2;
  acbrGnre.Configuracoes.WebServices.TimeOut:=context.transmissor.TimeOut * 1000;
  acbrGnre.Configuracoes.Arquivos.Salvar:=false;
  acbrGnre.Configuracoes.Arquivos.PathGNRE:='';
  acbrGnre.Configuracoes.Arquivos.PathArqTXT:='';
  acbrGnre.Configuracoes.Arquivos.PathSalvar:='';
  acbrGnre.Configuracoes.Arquivos.PathSchemas:=TAppFunctions.getPath + 'schemas\Gnre\';
  acbrGnre.SSL.LerCertificadosStore;
  acbrGnre.Configuracoes.WebServices.Ambiente:=TAcbrUtilGnre.convertToAmbiente(context.transmissor.tipoAmbiente.toName);
  result:=acbrGnre;
end;

 

 

  • Administradores
Postado

Boa tarde.

Seria interessante também o teste com o demo.

Att.

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

Postado
1 hora atrás, Italo Jurisato Junior disse:

Boa tarde,

Altere a configuração:

SSLXmlSignLib         := xsMsXml;

para:

SSLXmlSignLib         := xsLibXml2;

E faça novos testes.

Alterei a configuração conforme solicitou, mas não resolveu o problema.

Depurei o código e identifiquei que no método "TACBrWinReqResp.GetWinInetError" o parâmetro "ErrorCode" está chegando com valor "0", e por este motivo não entra em nenhuma condição do case "case ErrorCode of", e por isso a variável "ErrorMsg" fica com lixo de memória, pois tem um SetLength(ErrorMsg, 1024); na linha 256 do arquivo "ACBrWinReqRespClass.pas", e por este motivo não captura o erro que ocorreu.

Seguem prints em anexo.

 

ErrorMsg_LixoMemória.png

SendData_False.png

ConfiguracaoSolicitada_Italo.png

DadosEnviados.png

  • Obrigado 1
  • Fundadores
Postado
22 horas atrás, RP INFO Desenvolvimento disse:

Depurei o código e identifiquei que no método "TACBrWinReqResp.GetWinInetError" o parâmetro "ErrorCode" está chegando com valor "0", e por este motivo não entra em nenhuma condição do case "case ErrorCode of", e por isso a variável "ErrorMsg" fica com lixo de memória, pois tem um SetLength(ErrorMsg, 1024); na linha 256 do arquivo "ACBrWinReqRespClass.pas", e por este motivo não captura o erro que ocorreu.

Isso não é lixo... a API do Windows usar WideString, que são 16bits por Caracteres

Não consegui ver no tópico... Qual é a exata msg de erro ?

Por favor teste com o Demo do ACBr... ele é o unico projeto, que nós temos em comum, com você.. então se o erro ocorrer nele, nós aqui, podemos investigar e debugar

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado
2 horas atrás, Daniel Simoes disse:

Isso não é lixo... a API do Windows usar WideString, que são 16bits por Caracteres

Não consegui ver no tópico... Qual é a exata msg de erro ?

Por favor teste com o Demo do ACBr... ele é o unico projeto, que nós temos em comum, com você.. então se o erro ocorrer nele, nós aqui, podemos investigar e debugar

Sim, é lixo de memória, note que éfeito um setLength para 1024, mas não é carregado nenhum conteúdo nela, pois não entra em nenhuma das condições, apenas fica com o que já estava na memória.

Tem situações que pega strings do Projeto que nem estão mais alocadas, tenho exemplos que pega partes de SQL, tem momentos que pega byte 0 nas posições, e por isso gera erros.

Eu solucionei meu problema mudando a configuração SSLHttpLib para "httpWinINet" no lugar de "httpWinHttp". 

  • Fundadores
Postado
2 horas atrás, Daniel Simoes disse:

Não consegui ver no tópico... Qual é a exata msg de erro ?

Por favor teste com o Demo do ACBr... ele é o unico projeto, que nós temos em comum, com você.. então se o erro ocorrer nele, nós aqui, podemos investigar e debugar

Ainda preciso dessas informações... para analise...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado
15 horas atrás, Daniel Simoes disse:

Ainda preciso dessas informações... para analise...

Olá realizei o teste com a demo da GNRE, o erro também ocorre neste projeto.

Note que na mensagem de erro agora pegou parte do XML, ou seja, é lixo de memória.

Obs: Ocorre quando eu configuro o SSLType como "LT_TLSv1_2", com "LT_all" não dá erro.

 

Obrigado pela atenção.

 

 

ErroDemoGnreACBR.png

MensagemErroDemo.png

  • Obrigado 1
  • Fundadores
  • Solution
Postado

Realmente, por algum motivo, a WinAPI, não está retornando nada em GatLastError, após a falha da chamada em WinHttpSendRequest

Apliquei algumas modificações em ACBrWinReqRespClass.GetWinInetError, para esse tipo de situação...  Commit [r19809]

Em 06/05/2020 at 18:01, RP INFO Desenvolvimento disse:

Eu solucionei meu problema mudando a configuração SSLHttpLib para "httpWinINet" no lugar de "httpWinHttp". 

Isso fará o ACBr usar a API do Internet Explorer, que é mais antiga que a WinHTTP, e pode depender de configurações nos protocolos de segurança, no I.E.

  • Obrigado 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

×
×
  • 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.

The popup will be closed in 10 segundos...