Pesquisar na Comunidade
Showing results for tags 'ACBrConsultaCPNJ'.
Encontrado 1 registro
-
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!