Ir para conteúdo
  • Cadastre-se

dev botao

Componente ACBrNFe trava esperando resposta de requisição Http quando utilizamos certificados A3


  • Este tópico foi criado há 647 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde, alguém com problemas para enviar eventos da NFe através do componente ACBrNFE utilizando certificado A3? estamos enfrentando um caso bizarro aqui onde se não ativar o TimeOutPorThread do ACBrDFeSSL o componente fica travado por horas esperando uma resposta.

O erro ocorre na unit ACBrDFeSSL no trecho de código a partir da linha 1405:

if TimeOutPorThread then
begin
  EndTime := IncSecond(now,TruncFix(TimeOut/1000));
  SendThread := TDFeSendThread.Create( Self,
                                       TDFeSSLHttpClassOf(FSSLHttpClass.ClassType),
                                       ConteudoXML, AURL, ASoapAction, AMimeType);
  try
    while (not SendThread.Done) and (Now <= EndTime) do
      Sleep(50);
  finally
    Result := SendThread.Response;
    ErrorMsg := SendThread.ExceptMessage;

    if not SendThread.Done then
      SendThread.Abort  // Isso forçará a Thread terminar, e morrer por si...
    else
      SendThread.Free;
  end;

  if not EstaVazio(ErrorMsg) then
    raise EACBrDFeException.Create('Erro na thread de envio: ' + ErrorMsg);

  if EstaVazio(Result) then
    raise EACBrDFeException.Create('Timeout - Não foi possível obter a resposta do servidor');
  end
  else
  begin
    FHttpSendCriticalSection.Acquire;
    try
      Result := FSSLHttpClass.Enviar(ConteudoXML, AURL, ASoapAction, AMimeType, AAuthorizationHeader);
    finally
      FHttpSendCriticalSection.Release;
  end;
end;


No caso, se ativarmos o TimeOutPorThread através da seguinte configuração: 

ACBrNFe.Configuracoes.WebServices.TimeOutPorThread := True;

o componente, após 5 segundos, retorna um erro de timeout e finalmente pede o PIN do token, após informarmos o PIN, todas as requisições são enviadas normalmente pelo componente.
Se não ativarmos tal configuração, o componente fica travado e nunca pede o PIN, porém, só com o PIN ele vai conseguir fazer as requisições...

Alguém tem alguma ideia do que pode ser? Isso não acontece em todas as máquinas, na minha por exemplo, funciona normalmente, porém, na máquina de outro colega acontece também.

Anexo coloquei um relatório de erros que o componente retorna quando ativamos o TimeOut, caso seja necessário...

erro.txt

Link para o comentário
Compartilhar em outros sites

Infelizmente não, o cliente precisava do certificado então tivemos que devolver, não tenho mais como testar com o certificado...

Existe alguma possibilidade de abrirmos a tela do PIN manualmente? no caso, forçar utilizar o PIN antes de iniciar qualquer ação, por exemplo, ao carregar o certificado no componente antes de realizar algum evento?

Link para o comentário
Compartilhar em outros sites

isso acontecia em um dos meus clientes.. o sistema travava esperando aparecer o PIN da senha... quando entrava no gestor do token também travava.. então era necessário retirar o leitor / token da porta usb e inserir novamente, ou até mesmo as vezes reiniciar a maquina..  e só acontecia em uma das maquinas... recomendei que fizessem um certificado A1 para a emissão das notas...

AGGILLE-LOGO-500x180_fw.jpg.07c79ceacf0537ee105c0bbf0139435f.jpg

Aggille Sistemas de Gestão
Leandro do Couto
(51) 99105.1600
Novo Hamburgo / RS
[email protected]
www.aggille.com.br

Link para o comentário
Compartilhar em outros sites

Em 02/08/2022 at 08:27, Juliomar Marchetti disse:

O problema é a instalação correta do driver do leitor. assim tu pode salvar a senha no componente e vai funcionar sem travar

Juliomar, consegue me dar mais detalhes de como fazer essa instalação correta do driver do leitor?

No meu caso, estas são as configurações que fiz durante a instalação:

image.png.05d5d74e62601d5c3b25b7b30b163904.png

E quando tu fala que da pra salvar a senha no componente, podes me dizer qual a propriedade para informar o PIN do token A3?

Em 01/08/2022 at 17:50, Aggille Sistemas de Gestão disse:

isso acontecia em um dos meus clientes.. o sistema travava esperando aparecer o PIN da senha... quando entrava no gestor do token também travava.. então era necessário retirar o leitor / token da porta usb e inserir novamente, ou até mesmo as vezes reiniciar a maquina..  e só acontecia em uma das maquinas... recomendei que fizessem um certificado A1 para a emissão das notas...

Leandro, infelizmente o cliente é mais teimoso que uma mula... 😅

  • Haha 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores
1 hora atrás, nickolas.deluca disse:

Juliomar, consegue me dar mais detalhes de como fazer essa instalação correta do driver do leitor?

No meu caso, estas são as configurações que fiz durante a instalação:

image.png.05d5d74e62601d5c3b25b7b30b163904.png

E quando tu fala que da pra salvar a senha no componente, podes me dizer qual a propriedade para informar o PIN do token A3?

Leandro, infelizmente o cliente é mais teimoso que uma mula... 😅

no caso vai depender de cada fabricante e as cadeias de certificados.

é a mesma que tem no exemplo do svn pra tu salvar a senha do A1 no componente

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 647 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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...
The popup will be closed in 10 segundos...