Fiz uma função rápida que funciona em Delphi 7. Quem quiser usar é só alterar para os campos que usam.
procedure TFCon_CNPJ.btnConsultarClick(Sender: TObject);
var
I: Integer;
aHTTP : TACBrHTTP;
Resposta : TStringList;
URL : string;
begin
aHTTP := TACBrHTTP.Create(nil);
try
aHTTP.HTTPSend.Clear;
aHTTP.TimeOut := 10000;
URL := 'https://www.receitaws.com.br/v1/cnpj/'+F0Menu.TiraCaractere(EditCNPJ.Text)+'';
try
aHTTP.HTTPMethod('GET', URL);
Resposta := TStringList.Create;
try
Resposta.Text := Trim(aHTTP.RespHTTP.Text);
if Trim(LerCampo(Resposta,'nome')) = '' then
application.messagebox(pchar('CNPJ não encontrado.'),'Atenção',mb_iconinformation)
else
begin
EditTipo.text := LerCampo(Resposta,'tipo');
EditAbertura.text := LerCampo(Resposta,'abertura');
EditRazaoSocial.Text := LerCampo(Resposta,'nome');
EditPorte.Text := LerCampo(Resposta,'porte');
EditFantasia.text := LerCampo(Resposta,'fantasia');
EditEndereco.text := LerCampo(Resposta,'logradouro');
EditNumero.text := LerCampo(Resposta,'numero');
EditComplemento.text := LerCampo(Resposta,'complemento');
EditBairro.text := LerCampo(Resposta,'bairro');
EditCidade.text := LerCampo(Resposta,'municipio');
EditUF.text := LerCampo(Resposta,'uf');
EditCEP.text := StringReplace(LerCampo(Resposta,'cep'),'.','',[rfReplaceAll]);;
EditSituacao.text := LerCampo(Resposta,'situacao');
EditEmail.text := LerCampo(Resposta,'email');
EditTelefone.text := LerCampo(Resposta,'telefone');
end;
finally
Resposta.Free;
end;
except
on e: EACBrHTTPError do
begin
if pos('429',e.Message) > 0 then
begin
application.messagebox(pchar('Você excedeu o máximo de 3 consultas por minuto. Tente novamente mais tarde.'),'Atenção',mb_iconerror);
end
else
application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror);
end;
on e: exception do
begin
application.messagebox(pchar('Ocorreu o seguinte erro ao consultar o CNPJ: '+sLineBreak+e.Message),'Atenção',mb_iconerror);
end;
end;
finally
aHTTP.Free;
end;
A função para ler os campos:
function TFCon_CNPJ.LerCampo(Texto: TStringList; NomeCampo: String): String;
var
i : integer;
linha, coluna1, coluna2: String;
begin
Result := '';
for i := 0 to Texto.Count-1 do
begin
linha := uppercase(Trim(Texto[i]));
NomeCampo := uppercase(NomeCampo);
coluna1 := copy(linha,1,pos(':',linha)-1); //pegar o texto antes do :
coluna1 := StringReplace(Trim(coluna1),'"','',[rfReplaceAll]); //remover as aspas duplas "
if coluna1 = NomeCampo then
begin
coluna2 := Trim(copy(linha,pos(':',linha)+1,length(linha))); //pegar o texto depois dos :
coluna2 := StringReplace(Trim(coluna2),'"','',[rfReplaceAll]); //remover as aspas duplas "
coluna2 := StringReplace(Trim(coluna2),',','',[rfReplaceAll]); //remover a virgula ,
Result := coluna2;
break;
end;
end
end;