Ir para conteúdo
  • Cadastre-se

dev botao

Acbrconsultacpnj -> Cpf


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

Recommended Posts

Bom dia.

 

Estou adaptando o sistema de consultas de CNPJ do ACBr  para fazer um de consultas de CPF. Estou enfrentando alguns problemas com objetos como o HttpSend e o HttpPost, por exemplo.

 

A função GetCapchaURL() ficou assim:

 

function TForm1.GetCaptchaURL : String ;
var
  URL, Html: String;
begin
  try


    Html := idhtp1.Get('http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/ConsultaPublica.asp');


    URL := 'http://www.receita.fazenda.gov.br' +
           StrEntreStr(Html, 'alt='+
                        QuotedStr(ACBrStr('Imagem com os caracteres anti robô')) + ' src='+'''', '''');


    FViewState := StrEntreStr(Html, '<input type=hidden id=viewstate name=viewstate value='+'''', '''');


    Result := StringReplace(URL, 'amp;', '', []);
  except


  end;
end;

Como vocês podem ver, a consulta será feita a partir deste endereço:

http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/ConsultaPublica.asp

 

A minha dúvida, agora, diz respeito à leitura dos dados impressos na página; neste caso, apenas o nome do portador do CPF e a sua situação. 

 

Na função consulta eu fiz algo semelhante a isto:

var
       Buffer: TMemoryStream;
begin
       Buffer := TMemoryStream.Create;
       try
                Post.WriteString('origem=comprovante&');                Post.WriteString('viewstate=' + EncodeURLElement(fviewstate)+'&');
                Post.WriteString('cnpj='+OnlyNumber(ACNPJ)+'&'); // A variável ACNPJ traz o CPF
                Post.WriteString('captcha='+Trim(ACaptcha)+'&');
                Post.WriteString('captchaAudio=&');
                Post.WriteString('submit1=Consultar&');
                Post.WriteString('search_type=cnpj'); // Aqui eu não sei se posso alterar para CPF
                Post.Position:= 0;
   
     [...]
 
Depois eu comento o trecho abaixo:
 
    HttpSend.Clear;
    HttpSend.Document.Position:= 0;
    HttpSend.Document.CopyFrom(Post, Post.Size);
    HTTPSend.MimeType := 'application/x-www-form-urlencoded';
    HTTPPost('http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/valida.asp');  
 
E, no lugar, coloco:
               
    idhtp1.Post('http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/consultapublica.asp', Buffer);

Depois eu faço:

 

      Resposta := TStringList.Create;
      try
        //Resposta.Text := StripHTML(RespHTTP.Text);
        //RemoveEmptyLines( Resposta );


        //Resposta.Text := AnsiToUtf8(Resposta.Text);
        //DEBUG: Resposta.SaveToFile('/tmp/bobo.txt');


        NomeDaPessoa  := LerCampo(Resposta, 'Nome da Pessoa Física:');
 
Mas eu recebo o erro "Não foi possível obter os dados.", que é criada na exceção logo abaixo do procedimento acima.
 
Como eu poderia proceder? A propósito, seria uma boa fazer um componente para consulta de CPF.
 
Obrigado!

 

Link para o comentário
Compartilhar em outros sites

Porque ao invés de adaptar você não utiliza o ACBrConsultaCPF?

Os componentes já foram feitos intencionalmente separados porque são consultas diferentes, com resultados diferentes.

 

Eu não tenho este componente, Régys. Achei que nem existisse. Vou atualizar o meu ACBr e já dou uma resposta.

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

Pronto, após atualizar o ACBr, passei a ter o pacote referente à consulta por CPF. O problema é que quando eu vou abrir o exemplo de vocês, recebo a mensagem: 

 

Class TACBrConsultaCPF not found. Ignore the error or continue? NOTE: Ignoring the error may cause components to be  deleted or property values to be lost.

 

Abri um novo projeto e pesquisei por CPF. Não achou o componente.

 

Alguma sugestão?

 

Muitíssimo obrigado!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Depois de atualizar os fontes você fez um Build e reinstalou os pacotes?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Fui recompilar os pacotes básicos do Delphi pelo próprio instalador e comecei a receber a seguinte mensagem:

 

Can't load package C:\Uses\Public\Documents\Rad Studio\11.0\Bpl\ACBrComum.bpl.

Resource ACBr not found

Do you want to attempt to load this pacote in the next time a project is loaded?

 

E agora? =O

 

PS: o componente de CPF ainda não fora instalado.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Não, não reinstalei nada e nem dei build.

 

Build, que você diz, é o Build All Projects, do Delphi?

 

Obrigado!

-----------

 

 

Acabei de dar o Build All Projects, no Delphi, e não resolveu

O arquivo LEIA-ME.TXT explica como fazer, mas se você tem dificuldades para instalar manualmente, sugiro que use o ACBrInstall para instalar. Ele cuida destes detalhes para você. Na verdade acho que quase ninguém mais instala manualmente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

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