Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado (editado)

Estou utilizando a consulta viacep e ela funciona certo período do dia e de repente começa a dar o erro abaixo:

Erro HTTP: 500 
Socket Error: 10091 error:140A90C4:lib(20):func(169):reason(196)
URL: https://viacep.com.br/ws/89035360/json

Resposta HTTP:

 

O endereço apontado na URL funciona, já atualizei as DLL do openssl.

Reiniciando a aplicação volta a funcionar algumas horas, depois começa a dar o mesmo erro HTTP 500 novamente.

Alguém sabe o que pode ser ?

Editado por Rodrigo Ewald
Adicionei informações
  • Moderadores
Postado
2 horas atrás, Rodrigo Ewald disse:

Olá, não encontrei nada sobre limite no viacep, e testando o endereço no navegador https://viacep.com.br/ws/89035360/json sempre funciona.

Como está usando o ACBrCEP em sua aplicação?

o que pode estar ocorrendo é criando varias instâncias do componente

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

Postado
1 hora atrás, Juliomar Marchetti disse:

Como está usando o ACBrCEP em sua aplicação?

o que pode estar ocorrendo é criando varias instâncias do componente

 

Tenho o componente no formulário, uma procedure que chama "ACBrCEP1.BuscarPorCEP()", e uma procedure que executa no evento OnBuscaEfetuada, apenas isso, não faço nada no create ou destroy do formulário.

  • Moderadores
Postado

Tente fazer o seguinte, usar interface pra trabalhar . sugestão é claro

unit CEPInterface;

interface

uses
  ACBrCEP, SysUtils, Classes;

type
  // Interface para encapsular TEndereco
  IEndereco = interface
    ['{59E04EAB-9B4F-4F3E-A52B-AD8AB3422193}']
    function GetLogradouro: string;
    function GetBairro: string;
    function GetMunicipio: string;
    function GetUF: string;
    property Logradouro: string read GetLogradouro;
    property Bairro: string read GetBairro;
    property Municipio: string read GetMunicipio;
    property UF: string read GetUF;
  end;

  // Implementação da interface IEndereco
  TEnderecoWrapper = class(TInterfacedObject, IEndereco)
  private
    FEndereco: TEndereco;
  public
    constructor Create(AEndereco: TEndereco);
    function GetLogradouro: string;
    function GetBairro: string;
    function GetMunicipio: string;
    function GetUF: string;
  end;

  // Interface para consulta de CEP
  IConsultaCEP = interface
    ['{6EC7376C-9D40-4113-9FFD-775A1C3D819A}']
    function Consultar(const CEP: string): IEndereco;
  end;

  // Implementação da interface de consulta
  TConsultaCEP = class(TInterfacedObject, IConsultaCEP)
  private
    FACBrCEP: TACBrCEP;
  public
    constructor Create;
    destructor Destroy; override;
    function Consultar(const CEP: string): IEndereco;
  end;

implementation

{ TEnderecoWrapper }

constructor TEnderecoWrapper.Create(AEndereco: TEndereco);
begin
  FEndereco := AEndereco;
end;

function TEnderecoWrapper.GetLogradouro: string;
begin
  Result := FEndereco.Logradouro;
end;

function TEnderecoWrapper.GetBairro: string;
begin
  Result := FEndereco.Bairro;
end;

function TEnderecoWrapper.GetMunicipio: string;
begin
  Result := FEndereco.Municipio;
end;

function TEnderecoWrapper.GetUF: string;
begin
  Result := FEndereco.UF;
end;

{ TConsultaCEP }

constructor TConsultaCEP.Create;
begin
  FACBrCEP := TACBrCEP.Create(nil);
  FACBrCEP.WebService := wsCorreios; // Configuração do WebService desejado
end;

destructor TConsultaCEP.Destroy;
begin
  FACBrCEP.Free;
  inherited;
end;

function TConsultaCEP.Consultar(const CEP: string): IEndereco;
begin
  FACBrCEP.BuscarPorCEP(CEP); // Realiza a consulta pelo CEP
  if FACBrCEP.Enderecos.Count > 0 then
    // Retorna um wrapper para o primeiro endereço encontrado
    Result := TEnderecoWrapper.Create(FACBrCEP.Enderecos[0])
  else
    raise Exception.CreateFmt('CEP %s não encontrado.', [CEP]);
end;

end.

e use assim

uses
  CEPInterface; // Unit com a interface e implementação

var
  ConsultaCEP: IConsultaCEP;
  Endereco: IEndereco;
begin
    // Criando a implementação
    ConsultaCEP := TConsultaCEP.Create;

    // Consultando um CEP
    Writeln('Consultando o CEP 01001-000...');
    Endereco := ConsultaCEP.Consultar('01001-000'); // CEP de exemplo

    // Exibindo os dados retornados
    Writeln('Logradouro: ', Endereco.Logradouro);
    Writeln('Bairro: ', Endereco.Bairro);
    Writeln('Cidade: ', Endereco.Municipio);
    Writeln('Estado: ', Endereco.UF);

não se preocupe em destruir pois ele se encarrega.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

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