Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Tudo neste projeto foi feito com Thread, teve alguma alteração que o uso de Thread poderia a vim comprometer algo? Pois se que o uso de Thread é chato, uma mudança no projeto lá a gente que quer mexer em um monte de coisa que a Thread venha funcionar lega.

  • 2 semanas depois ...
Postado

Bom dia,
Encontrei o mesmo problema na utilização do trunk2 revision 9532 (dia 13/07) ,  resolvi o problema alterando  a unit ACBrNFeWebServices.pas sobrescrevendo o método procedure DefinirEnvelopeSoap; override;
procedure TDistribuicaoDFe.DefinirEnvelopeSoap;
var
  Texto: AnsiString;
begin
  Texto := '<?xml version="1.0" encoding="utf-8"?>';
  Texto := Texto + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
                                    'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
                                    'xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">';
  Texto := Texto +   '<soap12:Body>';
  Texto := Texto +     '<nfeDistDFeInteresse xmlns="' + Servico + '">';
  Texto := Texto +       '<nfeDadosMsg>';
  Texto := Texto +         FPDadosMsg;
  Texto := Texto +       '</nfeDadosMsg>';
  Texto := Texto +     '</nfeDistDFeInteresse>';
  Texto := Texto +   '</soap12:Body>';
  Texto := Texto + '</soap12:Envelope>';
  FPEnvelopeSoap := Texto;
end;


att

André.

  • 5 meses depois ...
Postado

Bom dia Pessoal, gostaria de compartilhar com você, ontem estive com um problema semelhante, e estou postando abaixo a solução que fiz para min, estava ocorrendo porque após configurar o componente eu não estava dando esse comando:

WS.SSL.CarregarCertificado;

Com ele consegui resolver, porém comecei a investigar o problema do porque o mesmo ocorre e identifiquei que no fonte ACBrDFeCapicom.pas nos métodos TDFeCapicom.Assinar e TDFeCapicom.Validar é utilizado o seguinte código:

  CoInitialize(nil);
  try
    CarregarCertificadoSeNecessario;
...

Acontece que no método CarregarCertificadoSeNecessario também é validado se tem ou não o número do certificado carregado, caso não tenha executa o método que carrega o certificado digital para memória, dentro desse método também se executa o CoInitialize(nil); e CoUninitialize; acabando liberando o recurso.

Uma sugestão de melhoria caso queiram aceitar seria alterar nos dois métodos "TDFeCapicom.Assinar" e "TDFeCapicom.Validar" para que o código fique dessa maneira:

  CarregarCertificadoSeNecessario;  
  CoInitialize(nil);
  try    
...

Isso irá evitar esse tipo de problema caso o programador esqueça de na hora de configurar de chamar o método:

WS.SSL.CarregarCertificado;

Anexei o fonte com a alteração caso queiram aceitar.

ACBrDFeCapicom.pas

  • Fundadores
Postado

Já testou com a alteração de ontem a noite ?... agora está assim:

  Inicializado := (CoInitialize(nil) in [ S_OK, S_FALSE ]);
  try
    ...
  finally
    if Inicializado then
      CoUninitialize;
  end;

 

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
8 minutos atrás, Daniel Simoes disse:

Já testou com a alteração de ontem a noite ?... agora está assim:


  Inicializado := (CoInitialize(nil) in [ S_OK, S_FALSE ]);
  try
    ...
  finally
    if Inicializado then
      CoUninitialize;
  end;

 

Realmente Daniel, pelo que vi isso vai resolver também. 

Vou fazer um teste aqui para verificar se funciona.

  • Este tópico foi criado há 3256 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.