Ir para conteúdo
  • Cadastre-se

dev botao

Mensagem de erro em UTF-8 convertida novamente para UTF-8


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

Recommended Posts

Olá a todos.

Então, eu utilizo o Lazarus e a correção da revisão 14351 na unit ACBrDFeHttpWinApi acabou gerando um bug relacionado a UTF-8.
O bug no meu caso acontece porque na linha 106 pode gerar uma exceção e essa exceção vem como string UTF-8.
A exceção gerada é capturada como o seguinte código:

    except
      On E: Exception do
      begin
        raise EACBrDFeException.Create( Format( cACBrDFeSSLEnviarException,
                                        [InternalErrorCode, HTTPResultCode] ) + sLineBreak +
                                        E.Message ) ;
      end;

A chamada EACBrDFeException.Create(...) converte a mensagem do erro para UTF-8, mas ela já é UTF-8 nesse meu caso.
E isso faz com que a string fique errada, no caso dela conter acentuações.

Detalhe, que o código antes da correção dessa revisão não gerava esse bug.

Mensagem de erro que aconteceu comigo:
  "- Inativo ou Inoperante tente novamente.
   Erro Interno: 12007
   Erro HTTP: 0
   Erro: Requisição não enviada.
   Erro: 12007 - O nome do servidor não pode ser resolvido."

Desde já agradeço a atenção de todos.

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...

Eu atualizei os fontes e o bug ainda acontece.
A correção que eu achei, foi alterar a chamada do método  EACBrDFeException.Create(...) por  EACBrDFeException.CreateDef(...),
dentro do método Enviar da classe TDFeHttpWinHttp da unit  ACBrDFeHttpWinApi.pas.

Veja como o código ficou:

function TDFeHttpWinHttp.Enviar(const ConteudoXML: String; const AURL: String;  const ASoapAction: String; AMimeType: String): String;
var
  Resp: TMemoryStream;
begin
  {...}
  try
    try
     {...}
    except
      On E: Exception do
      begin
        raise EACBrDFeException.CreateDef( Format( cACBrDFeSSLEnviarException,
                                        [InternalErrorCode, HTTPResultCode] ) + sLineBreak +
                                        E.Message ) ;
      end;
    end;
  finally
    Resp.Free;
  end;
end;

Estou alterando a fonte do ACBr direto, para não passar por esse bug.
Mas acho que essa correção serve para toda a comunidade.

Link para o comentário
Compartilhar em outros sites

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