none
Consulta CNPJ na Receita Federal em C# RRS feed

  • Pergunta

  • Bom dia,

         preciso buscar as informações do CNPJ no site da Receita Federal. Já vi todos os posts aqui a esse respeito e testei todas as respostas, inclusive as marcadas como resolvido. Nenhuma funcionou aqui. O retorno é sempre o mesmo:

    <head><title>Object moved</title></head>
    <body><h1>Object Moved</h1>This object may be found <a HREF="Cnpjreva_Vstatus.asp?origem=comprovante&amp;cnpj=58285435000100">here</a>.</body>

       Alguém já passou pelo mesmo problema e pode ajudar com o código correto para realizar esta consulta?



    • Editado Jone Cunha sexta-feira, 5 de dezembro de 2014 13:41 Resolvido
    • Editado Marcos SJ sexta-feira, 13 de maio de 2016 20:09 Edição
    sexta-feira, 5 de dezembro de 2014 13:12

Respostas

Todas as Respostas

  • Veja aqui meu projeto 100% funcional que traz a consulta e exibi na tela com a opção de imprimir

    • Sugerido como Resposta Mr. GMSOFT sexta-feira, 5 de dezembro de 2014 13:17
    • Marcado como Resposta Jone Cunha sexta-feira, 5 de dezembro de 2014 13:39
    • Editado Mr. GMSOFT terça-feira, 24 de fevereiro de 2015 11:54
    sexta-feira, 5 de dezembro de 2014 13:17
  • Perfeito sua solução.

    Muito obrigado pela ajuda.

    sexta-feira, 5 de dezembro de 2014 13:40
  • Olá! Estou buscando uma solução semelhante a esta, porém o link não está mais ativo. Poderia disponibilizá-lo novamente? Obrigado!

    Gilberto Otsuka

    domingo, 21 de dezembro de 2014 22:08
  • Segue Link
    • Sugerido como Resposta Gilberto Otsuka segunda-feira, 22 de dezembro de 2014 17:08
    • Editado Mr. GMSOFT terça-feira, 24 de fevereiro de 2015 11:54
    segunda-feira, 22 de dezembro de 2014 11:18
  • Obrigado pelo retorno, ótimo exemplo! Abraços.

    Gilberto Otsuka

    segunda-feira, 22 de dezembro de 2014 17:09
  • Preciso de passar um CNPJ e com isso tem que retornar os dados da empresa.

    Como faço isso em c#.net ??

    help me !

    terça-feira, 23 de dezembro de 2014 14:31
  • Sua pergunta já foi respondida nessa Thread, leu o código para entender como funciona?  a aplicação que fiz funciona perfeitamente e ainda pode imprimir a consulta, dá uma olhadinha direito pois pode manipular os dados como quizer pois gravo em html
    terça-feira, 23 de dezembro de 2014 14:45
  • Sim, sendo que ainda não estou conseguindo entender como vou fazer para executar ele em web.

    eu tentei, mas nao consegui.

    terça-feira, 23 de dezembro de 2014 14:52
  • Em um certo momento  vai ser digitado  o CPNJ e  vai verificar se existe ou não, se existir vai salvar algumas informações em determinados textbox.
    terça-feira, 23 de dezembro de 2014 14:54
  • Quando você fala WEB ,você esta desenvolvendo para Asp.net?
    terça-feira, 23 de dezembro de 2014 14:56
  • sim, malz a minha ignorância, mas sempre coloco dessa forma e sempre tenho retorno.

    Erro de escrita minha. sorry !

     
    terça-feira, 23 de dezembro de 2014 16:26
  • Mais não tem problema pois você pode utilizar a dll, só vai mudar a lógica que no caso ao invés de usar o WebBrowser vai usar somente o HttpWebRequest mais para isso vai ter que entender o código do meu projeto o funcionamento praticamente vai ser o mesmo
    terça-feira, 23 de dezembro de 2014 16:40
  • Mr GM...

    o link está fora... tem como você disponibilizar novamente?

    vlw!!!!!


    Natan

    terça-feira, 23 de dezembro de 2014 16:54
  • Segue o link aqui
    terça-feira, 23 de dezembro de 2014 16:57
  • oq deve colocar aqui ?

     HttpWebRequest.Create(@"file:///" + Application. ??() + "/Consulta.html");

    terça-feira, 23 de dezembro de 2014 18:28
  • Ai no caso onde você quer salvar o arquivo html
    terça-feira, 23 de dezembro de 2014 18:30
  • só estou tendo problema para gerar essa imagem, ou seja esse picturebox.
    quarta-feira, 24 de dezembro de 2014 13:34
  • No caso da imagem você terá que recuperar no html "<img src="+imagem+"</img>"
    quarta-feira, 24 de dezembro de 2014 13:36
  • No caso seria isso ?

    Estava com minhas duvidas até pq pensei em fazer isso, no caso ele vai no metodo e pega a string que está alocada o endereço da imagem ou seja  "/scripts/captcha/Telerik.Web.UI.WebResource.axd?type=rca&guid=9f0491e1-882c-44cc-aaa2-de5101d60423"

    string endereco;

    ConsultaCnpj.RecuperaCaptcha(string enderecoimagem);

    this.endereco = enderecoimagem;

    <img src="+endereco +"</img>

    falei besteira ou é isso mesmo ?

    quarta-feira, 24 de dezembro de 2014 13:43
  • Seria mais ou menos por ai, só não tenho como testar agora
    quarta-feira, 24 de dezembro de 2014 13:45
  • perfeito vou testar isso agora, vlwwwww

    quarta-feira, 24 de dezembro de 2014 13:53
  • ta meio complicado pro meu lado, não estou conseguindo jogar está imagem bitmap em uma imagem.
    quarta-feira, 24 de dezembro de 2014 14:39
  • No seu código Behind você esta fazendo como, por que basta fazer isso por exemplo no click do botao na pagina:
    this.imgCaptcha.ImageUrl = "coloque aqui o que a função retorna do captcha";

    quarta-feira, 24 de dezembro de 2014 14:51
  • Fiz assim aqui em um teste com uma pagina asp.net e funciona perfeitamente

    protected void Button2_Click(object sender, EventArgs e)
            {
                Image1.ImageUrl = "http://www.felipesilveira.com.br/wp-content/themes/modern-style/images/xtwitter.png.pagespeed.ic.XNXCJ4V4a1.png";
            }

    Coloca no evento que precisa trazer o captcha.
    quarta-feira, 24 de dezembro de 2014 15:43
  • fiz desta forma, sendo que o retorno do método RecuperaCaptcha() não é o endereço.

    No Behind  

    Image1.Attributes["src"] = ResolveUrl("/scripts/captcha/Telerik.Web.UI.WebResource.axd?type=rca&guid=0e934073-d73c-4d54-bb9f-62ad1e6b0670");

    quarta-feira, 24 de dezembro de 2014 17:03
  • meu único problema é pegar o retorno do metodo informando onde está alocado a imagem.
    quarta-feira, 24 de dezembro de 2014 17:06
  • A origem da imagem é essa:

    Image1.Attributes["src"] = ResolveUrl("http://www.receita.fazenda.gov.br/scripts/captcha/Telerik.Web.UI.WebResource.axd?type=rca&guid=0e934073-d73c-4d54-bb9f-62ad1e6b0670");

    Basta você acrecentar "http://www.receita.fazenda.gov.br" que funciona, lembrando que tudo isso esta no codigo

    quarta-feira, 24 de dezembro de 2014 18:13
  • vou testar, vc é 10 mano!
    sexta-feira, 26 de dezembro de 2014 11:25
  • Esse lance do endereço até que deu certo em algum momento, eu criei um metedo para retornar apenas a string do endereço, sendo que quando ele entra no metodo para verificar a imagem é gerado um outro código de imagem diferente, logo vai está errado.

    como faço para carregar um bitmap em uma imagem, ou carregar o bitmap em um picturebox e carregar o mesmo na imagem  ?

    PictureBox pic = new PictureBox();

    pic.Image = bit;

    sexta-feira, 26 de dezembro de 2014 14:19
  • ta complicado, toda fez que faço um postback ele perde a informação da viewState.

    sexta-feira, 26 de dezembro de 2014 16:26
  • Tente marcar o ViewState da imagem como false
    sábado, 27 de dezembro de 2014 11:57
  • Bom dia meu camarada !

    Bom eu consegui passar o mesmo ViewState através de uma session e por parâmetro 

    ConsultaCnpj.Consulta(EdCNPJ.Text, edCAPTCHA.Text, tripaView);

    único problema é quando chega nessa linha 

    File.WriteAllText(@"Consulta.html", ConsultaCnpj.RetornoEmHtml(), System.Text.Encoding.UTF8);

    da acesso negado 

    Access to the path 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\Consulta.html' is denied.

    segunda-feira, 29 de dezembro de 2014 11:46
  • Nesse diretorio não conseguira salvar o arquivo, tente informar o local onde quer salvar tipo:

    File.WriteAllText(@"C:\Users\SEU_USUARIO\Consulta.html", ConsultaCnpj.RetornoEmHtml(), System.Text.Encoding.UTF8);
    segunda-feira, 29 de dezembro de 2014 11:49
  • No meu caso a imagem só vai aparecer quando click em atualizar imagem ou quando clicar dentro do Textbox para digitar o CNPJ.

     Se você quiser depois que eu terminar de alterar e estiver funcionando eu te mando essa alteração.        

       edCAPTCHA.Text = "";
               Cursor cursor;
                  string endereco = "";
                  string view = "";
                cursor = Cursors.WaitCursor;
               

         string bit = ConsultaCnpj.RecuperaCaptcha(); // pego endereço e o view
             
                 string[] valores = bit.Split('|'); //separo 
                 view = valores[0].ToString(); // view
                 endereco = valores[1].ToString() + valores[2].ToString(); // endereço
                Session["bit"] = view;
        //joga a imagem na tela 
                Image1.Attributes["src"] = ResolveUrl(endereco);


    segunda-feira, 29 de dezembro de 2014 11:52
  • O atualizar é só ara quando você não consegue identificar o captcha, o ideal é você exibir o captcha assim que for consultar o CNPJ (não é digitar é quando a pagina de consulta abrir como   da receita)
    segunda-feira, 29 de dezembro de 2014 12:01
  • O que acontece e que eu nao posso colocar no pag_load pq sempre que faço uma outra consulta que é preciso para alterar outras informações o conteúdo do cnpj é perdido, e realmente tenho que fazer um postback, nem tem como fazer o parcial.

    De qualquer forma vai funcionar até pq no seu código quando ele executa pela primeira vez ele vai no mesmo código que é usado no botão atualiza.

    Meu único problema agora é essa linha.

     

    WebBrowser webBrowser1 = new WebBrowser();
     webBrowser1.Navigate(@"file:///C:\bila\Consulta.html");

    Estou vendo como vou usar HttpWebRequest  até pq deu erro na linha de cima.

    segunda-feira, 29 de dezembro de 2014 12:21
  • ha ta, o erro foi no momento de instanciar o webBrowser pede o activex com uma numerção.
    • Editado Jeff Valentim segunda-feira, 29 de dezembro de 2014 12:22
    segunda-feira, 29 de dezembro de 2014 12:22
  • http://www.4shared.com/file/RFaws3WLba/CnpjReceitaJeffAsp.html?

    ProjectCnpj

    Não sei onde estou pecando, está passando tudo certo, porém o único retorno e o site da receita manda é isso.

    segunda-feira, 29 de dezembro de 2014 15:51
  • Algumas vezes aparece isso, tente limpar o cookie e cache do seu navegador, mais não conseguiu consultar nenhuma vez?
    segunda-feira, 29 de dezembro de 2014 15:53
  • nenhuma! 
    segunda-feira, 29 de dezembro de 2014 15:54
  • Então provavelmente não esta autenticando o captcha, vou olhar seu código, não posso te prometer que olharei agora, só quando chegar em casa,blz
    segunda-feira, 29 de dezembro de 2014 16:08
  • blz, tbm acredito que seja isso.

    e obrigado.


    segunda-feira, 29 de dezembro de 2014 16:51
  • Bom dia meu camarada.

    Vou pesquisar aqui se encontro, não sei oque está acontecendo e estou precisando resolver isso.

    segunda-feira, 5 de janeiro de 2015 12:16
  • O que fazer? No asp.net o resultado é sempre esse:

    <script language="JavaScript">
      function proxima(link)
      {
       location.replace(link);
       return false;
      }
      function carrega(vobjeto) {
         for (var va = 0 ; va < document.forms[0].elements.length; va++) {
            if (document.forms[0].elements[va].name == vobjeto) {
                document.forms[0].elements[va].focus();
            }
         }    
         return false;
      }
      function volta(vvolta) {
         history.go(vvolta*-1);
         return false;
      }
      function SaltaCampo (campo, prox, tammax, teclapres)
    {
       var tecla = teclapres.keyCode;
       vr = campo.value;
       tam = vr.length;
       if (tecla != 0 && tecla != 10 && tecla != 24)
          if (tam == tammax)
              prox.focus();
    }
    </script>
    
    
    <script>
    function html5_audio(){
      var a = document.createElement('audio');
      return !!(a.canPlayType && a.canPlayType('audio/wav;').replace(/no/, ''));
    }
     
    var play_html5_audio = false;
    if(html5_audio()) play_html5_audio = true;
     
    function play_sound(url) {
      
      if(play_html5_audio){
        var snd = new Audio(url);
        snd.load();
        snd.play();
      }else{
        try {
          var soundEmbed = document.createElement("embed");
          soundEmbed.setAttribute("src", url);
          soundEmbed.setAttribute("hidden", true);
          soundEmbed.setAttribute("autostart", false);
          soundEmbed.setAttribute("width", 0);
          soundEmbed.setAttribute("height", 0);
          soundEmbed.setAttribute("enablejavascript", true);
          soundEmbed.setAttribute("autostart", true);
          document.body.appendChild(soundEmbed);
        }
        catch (e) {
         document.getElementById("captchaLink").setAttribute("href",url);
    
        }
      }
    }
    </script>
    
    <html>
    
    <head>
    	<script language=javascript>
    		function validaCaracteresCaptcha(nomeForm, idLetra, idSom, paginaDestino) {
    			var form = document.getElementById(nomeForm);
    			if (document.getElementById(idLetra).value == "" && document.getElementById(idSom).value == "")
    			{
    				 AlertaCaptcha("Favor preencher algum dos campos de validação");
    				 form.action= "";
    				 return false;
    			}
    			
    			if (document.getElementById(idLetra).value != "" && document.getElementById(idSom).value != "")
    			{
    				 AlertaCaptcha("Favor preencher apenas um dos campos de validação");
    				 form.action="";
    				 return false;
    			}
    			if (document.getElementById("cnpj").value == "")
    			{
    				 AlertaCaptcha("Favor preencher o campo de CNPJ");
    				 form.action="";
    				 return false;
    			}
    			
    			form.action=paginaDestino;
    			return true;
    		}
    		
    		function FRMOnLoad()
    		{
    			var ck 
    			ck = getCookie('flag');
    									
    			if (theForm.idLetra.value != "" || ck == null || ck == 1)
    		    {
    				theForm.idLetra.value = "";  // para o firefox nao ficar recarregando em loop
    				document.cookie = 'flag=0';
    				location.reload();												
    		    }
    		    theForm.cnpj.focus();		    
    		}
    		
    		function Submeter()
    		{
    			
    			document.cookie = 'flag=1';
    						
    			
    			if (validaCaracteresCaptcha('theForm', 'captcha', 'captchaAudio', 'valida.asp') == false)
    			{
    				return false;
    			}
    			
    		}
    		
    		function deleteCookie(nome)
    		{
    			var exdate = new Date();
    			exdate.setTime(exdate.getTime() + (-1 * 24 * 3600 * 1000));
    			document.cookie = nome + '=' + escape('')+ ((-1 == null) ? '' : '; expires=' + exdate);
    		}
    		
    		function getCookie( check_name ) {
    		// first we'll split this cookie up into name/value pairs
    		// note: document.cookie only returns name=value, not the other components
    		var a_all_cookies = document.cookie.split( ';' );
    		var a_temp_cookie = '';
    		var cookie_name = '';
    		var cookie_value = '';
    		var b_cookie_found = false; // set boolean t/f default f
    
    		for ( i = 0; i < a_all_cookies.length; i++ )
    		{
    			// now we'll split apart each name=value pair
    			a_temp_cookie = a_all_cookies[i].split( '=' );
    
    
    			// and trim left/right whitespace while we're at it
    			cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
    
    			// if the extracted name matches passed check_name
    			if ( cookie_name == check_name )
    			{
    				b_cookie_found = true;
    				// we need to handle case where cookie has no value but exists (no = sign, that is):
    				if ( a_temp_cookie.length > 1 )
    				{
    					cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
    				}
    				// note that in cases where cookie is initialized but no value, null is returned
    				return cookie_value;
    				break;
    			}
    			a_temp_cookie = null;
    			cookie_name = '';
    		}
    		if ( !b_cookie_found )
    		{
    			return null;
    		}
    	}
    
    				
    	</script>
    	
    	<title>Emissão de Comprovante de Incrição e de Situação Cadastral</title>
    	
    	<script src="js/captcha.js" type="text/javascript"></script>
    	<link href="css/captcha.css" rel="stylesheet" type="text/css" />
    </head>
    
    
    <body background="area_texto_back.jpg" onload="FRMOnLoad();">
    
    
    <!--<form id="theForm" action="" onSubmit="javascript:return validaCaracteresCaptcha('theForm', 'idLetra', 'idSom', 'valida.asp')" method="post" name="frmConsulta">-->
    
    
    <form id="theForm" action="" onSubmit="javascript:return Submeter();" method="post" name="frmConsulta">
    
    
    	<table border="0" cellspacing="0" cellpadding="0" width="100%">
    		<tr>
    			<td>
    				<font color="#000080" face="Arial">
    				<b>Emissão de Comprovante de Inscrição e de Situação Cadastral</b></font>
    			</td>  
    		</tr>
    	</table>
        
    	<hr size="1">
    
    	<p><font face="Arial" size="2">
    	<b>Contribuinte,</b></p> 
    	<p>Esta página tem como objetivo permitir a emissão do Comprovante de Inscrição e de Situação Cadastral 
    	   de Pessoa Jurídica pela Internet em consonância com a 
    	<!-- 23/06/2010 Jayro Martinelli SM:244814
    	<a target="_blank" href="http://www.receita.fazenda.gov.br/Legislacao/Ins/2007/in7482007.htm">	
    	<font face="Arial" size="2">
    	Instrução Normativa RFB nº 748, de 28 de junho de 2007.</a> -->
    	
    	
    	
    	<a target="_blank" href="http://www.receita.fazenda.gov.br/Legislacao/Ins/2011/in11832011.htm">
    	<font face="Arial" size="2">		
    	Instrução Normativa RFB nº 1.183, de 19 de agosto de 2011.</a> 
    	
    	
    	<p align="left"><font size="2" face="arial">
    	Digite o número de CNPJ da empresa e clique em &quot;Consultar&quot;.</font></p>  
    
    	<input type="hidden" name="origem" value="comprovante">    
    	
    	<input type=hidden id=viewstate name=viewstate value='RadStyleSheetManager1_TSSM=&RadScriptManager1_TSM=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a33363de7-7c08-435e-ab35-682b2ed2c688%3aea597d4b%3ab25378d2%3bTelerik.Web.UI%3aen-US%3a4701e229-f1c8-4ec4-9c40-b2d233d95d5d%3a16e4e7cd%3af7645509%3a22a6274a%3aed16cbdc%3a11e117d7&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKLTc1OTk5NDIwOA8WAh4IcHJldkdVSUQFJDVhMjg1YWM2LTBhZTgtNDkyMC04NGQ2LThlZDkzM2ZiMDQxNhYCAgMPZBYCAgUPFCsAAw8WBh4FV2lkdGgbAAAAAADAckABAAAAHgZIZWlnaHQbAAAAAADAUkABAAAAHgRfIVNCAoADZBYCHgtDdXJyZW50R3VpZAUkNWEyODVhYzYtMGFlOC00OTIwLTg0ZDYtOGVkOTMzZmIwNDE2FCsAA2RkFgIeCk1pblRpbWVvdXQCAxYCAgEPZBYIZg9kFgJmD2QWBmYPDxYKHwIbAAAAAAAASUABAAAAHwEbAAAAAACAZkABAAAAHghDc3NDbGFzc2UeCEltYWdlVXJsBVN%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPXJjYSZndWlkPTVhMjg1YWM2LTBhZTgtNDkyMC04NGQ2LThlZDkzM2ZiMDQxNh8DAoIDZGQCAQ8PFgIeBFRleHQFEUdlcmFyIG5vdmEgaW1hZ2VtZGQCAg8WBB4JaW5uZXJodG1sBQVPdXZpch4EaHJlZgVXfi9UZWxlcmlrLldlYi5VSS5XZWJSZXNvdXJjZS5heGQ%2FdHlwZT1jYWgmYW1wO2d1aWQ9NWEyODVhYzYtMGFlOC00OTIwLTg0ZDYtOGVkOTMzZmIwNDE2ZAIBDw8WCh8CGwAAAAAAAElAAQAAAB8BGwAAAAAAgGZAAQAAAB8GZR8HBVN%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPXJjYSZndWlkPTVhMjg1YWM2LTBhZTgtNDkyMC04NGQ2LThlZDkzM2ZiMDQxNh8DAoIDZGQCAg8WBh8JBQVPdXZpch8KBVd%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPWNhaCZhbXA7Z3VpZD01YTI4NWFjNi0wYWU4LTQ5MjAtODRkNi04ZWQ5MzNmYjA0MTYeB1Zpc2libGVnZAIDD2QWBGYPDxYIHwZlHglBY2Nlc3NLZXllHghUYWJJbmRleAEAAB8DAgJkZAIBDw8WBh8GZR8IBRxUeXBlIHRoZSBjb2RlIGZyb20gdGhlIGltYWdlHwMCAmRkGAIFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtSYWRDYXB0Y2hhMQULUmFkQ2FwdGNoYTEPFCsAAgUkNWEyODVhYzYtMGFlOC00OTIwLTg0ZDYtOGVkOTMzZmIwNDE2BgAAAAAAAAAAZAyG72qT2%2BfdTAZagI4xIjxO%2FN3kNTTrirFwJxwhK%2BdW&__EVENTVALIDATION=%2FwEWAgLZzqKHCALYv5ykDMNqZFxvH8Ziz%2BdqYOU9Ncm5KXsecaVCcbkqQdoNLf2m&RadCaptcha1_ClientState=&RadCaptcha1%24CaptchaTextBox='> 
    	
    	<table border="0" cellspacing="1">
    	<tr>
    		<td valign="top" colspan="2">
    		<font face="Arial" size="2">
    		<b>CNPJ :</b> 
    		<input 
    			tabIndex="1" 
    			name="cnpj" 
    			maxlength="14" 
    			size="16" 
    			onKeyup="SaltaCampo(document.frmConsulta.cnpj, document.frmConsulta.chave, 14, event)"
    			value="34484188000536"> 
    		</font>
    
    		</td>
    	</tr>
    	
    	
    	
    	<tr>
    		<td valign="top" colspan="2">
    		  
    		</td>
    	</tr>
    	
    	<tr>
    		<td width="50%">
    		  <font face="Arial" size="2">		  
    			<span><label>Digite os caracteres ao lado:&nbsp;</label><input type='text' title='Repita os caracteres impressos na imagem ao lado ou pressione tab para acessar link de acessibilidade' maxLength='6' size='7' id='captcha' name='captcha'/><a id=captchaLink href='#' onclick="javascript:setTimeout(function(){play_sound('/scripts/captcha/Telerik.Web.UI.WebResource.axd?type=cah&amp;guid=5a285ac6-0ae8-4920-84d6-8ed933fb0416')}, 8000); document.getElementById('spanSom').style.display='block'; document.getElementById('captchaAudio').focus();"><img src='/scripts/captcha/captcha.gif' alt='Ouvir os caracteres'></a><span id='spanSom' style='display: none'><label for='captchaAudio'>Digite os caracteres que serão falados em breve:&nbsp;</label><input type='text' maxlength='6' size='7' id='captchaAudio' name='captchaAudio' onblur="document.getElementById('submit1').focus();"/></span></span>
    		  </font>
    		</td>
    		<td width="50%">
    		  <font face="Arial" size="2">
    			<img border='0' id='imgcaptcha' alt='Imagem com os caracteres anti robô' src='/scripts/captcha/Telerik.Web.UI.WebResource.axd?type=rca&amp;guid=5a285ac6-0ae8-4920-84d6-8ed933fb0416'><br/>Se os caracteres da imagem estiverem ilegíveis, <a href="javascript:document.getElementById('captcha').value=''; window.location.reload();">gerar outra imagem</a>
    		  </font>
    		</td>
        </tr>
    	
    	
    	
    	<tr>
    		<td align="center" colspan="2">
    	    <p><br>
    	    <input type="submit" value="Consultar" id=submit1 name=submit1>
    	    <input type="hidden" name="search_type" value="cnpj">      
    		<input type="reset" name="opcao" value="Limpar">
    
    	    </p>
    	    </td>
    	</tr>
    	</table>
    
    	</form>
    <!-- Div obrigatório. Nele será gravado o código necessário para funcionamento do flash-->
    <div id="container"></div>
    </body>
    </html>

    quarta-feira, 28 de janeiro de 2015 11:42
  • Mr GM !

    O arquivo esta fora.

    Poderia upar ele novamente?

    Obrigado.

    sexta-feira, 6 de fevereiro de 2015 03:50
  • Segue arquivo AQUI

    • Sugerido como Resposta Mr. GMSOFT sexta-feira, 6 de fevereiro de 2015 08:51
    • Editado Mr. GMSOFT terça-feira, 24 de fevereiro de 2015 11:56
    sexta-feira, 6 de fevereiro de 2015 08:51
  • Mr GMSoft, o seu exemplo estava funcionando perfeitamente até o dia 11/02, mas acho que a receita alterou a página cnpjreva_solicitacao2.asp e não está mais funcionando. Você tem ideia de como resolver? Obrigado.

    sexta-feira, 13 de fevereiro de 2015 13:45
  • Não mudou não esta a mesma coisa aqui o link funcionando:
    http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao2.asp

    sexta-feira, 13 de fevereiro de 2015 13:51
  • O link está funcionando mas parece que eles mudaram o html, por exemplo a tag id=viewstate não existe mais. E não consigo mais obter o captcha. Você está conseguindo pelo método RecuperaCaptcha()?

    Obrigado.

    sexta-feira, 13 de fevereiro de 2015 14:42
  • é vi agora que removeram a viewstate, vou olhar depois para corrigir
    sexta-feira, 13 de fevereiro de 2015 14:44
  • Pois é. No começo pensei que o problema fosse cache na minha máquina, mas testei em outros pcs e tbm deu o msm problema. Eles tbm mudaram o id='imgcaptcha'. Eu to tentando corrigir. Se eu conseguir alguma coisa eu compartilho. Vlw Mr!!
    sexta-feira, 13 de fevereiro de 2015 14:48
  • Obrigado
    segunda-feira, 16 de fevereiro de 2015 11:27
  • Boa noite Pessoal,

    Estava tendo o mesmo problema que vocês e resolvi dar uma verificada.

    As modificações que realizei solucionaram o problema.

    Segue o esquema:

    1º Criar uma classe chamada CookieAwareWebClient

    using System;
    using System.Net;
    
    namespace ConsultaCNPJ
    {
        public class CookieAwareWebClient : WebClient
        {
            private CookieContainer _mContainer;
    
            public void SetCookieContainer(CookieContainer container)
            {
                _mContainer = container;
            }
    
            protected override WebRequest GetWebRequest(Uri address)
            {
                WebRequest request = base.GetWebRequest(address);
                var webRequest = request as HttpWebRequest;
                if (webRequest != null)
                {
                    webRequest.CookieContainer = _mContainer;
                    webRequest.KeepAlive = true;
                    webRequest.ProtocolVersion = HttpVersion.Version10;
                }
                return request;
            }
        }
    }

    2º Criar a classe ConsultaCNPJReceita, ela tem como base o fonte deste forum, porém realizei as modificações para suporte as atualizações das tags do site da Receita.

    using System;
    using System.Drawing;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;
    
    namespace ConsultaCNPJ
    {
        public class ConsultaCNPJReceita
        {
            private readonly CookieContainer _cookies = new CookieContainer();
            private String urlBaseReceitaFederal = "http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/";
            private String paginaValidacao = "valida.asp";
            private String paginaPrincipal = "cnpjreva_solicitacao2.asp";
            private String paginaCaptcha = "captcha/gerarCaptcha.asp";
            
            public Bitmap GetCaptcha()
            {
                String htmlResult;
                using (var wc = new CookieAwareWebClient())
                {
                    wc.SetCookieContainer(_cookies);
                    wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                    wc.Headers[HttpRequestHeader.KeepAlive] = "300";
                    htmlResult = wc.DownloadString(urlBaseReceitaFederal + paginaPrincipal);
                }
                if (htmlResult.Length > 0)
                {
                        var wc2 = new CookieAwareWebClient();
                        wc2.SetCookieContainer(_cookies);
                        wc2.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                        wc2.Headers[HttpRequestHeader.KeepAlive] = "300";
                        byte[] data = wc2.DownloadData(urlBaseReceitaFederal + paginaCaptcha);
                        return new Bitmap(new MemoryStream(data));
                }
                return null;
            }
    
            public String Consulta(string aCNPJ, string aCaptcha)
            {
                var request = (HttpWebRequest)WebRequest.Create(urlBaseReceitaFederal + paginaValidacao);
                request.ProtocolVersion = HttpVersion.Version10;
                request.CookieContainer = _cookies;
                request.Method = "POST";
    
                string postData = "";
                postData = postData + "origem=comprovante&";
                postData = postData + "cnpj=" + new Regex(@"[^\d]").Replace(aCNPJ, string.Empty) + "&";
                postData = postData + "txtTexto_captcha_serpro_gov_br=" + aCaptcha + "&";
                postData = postData + "submit1=Consultar&";
                postData = postData + "search_type=cnpj";
    
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;
    
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
    
                WebResponse response = request.GetResponse();
                StreamReader stHtml = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1"));
                String retorno = stHtml.ReadToEnd();
    
                if (retorno.Contains("Verifique se o mesmo foi digitado corretamente"))
                    throw new System.InvalidOperationException("O número do CNPJ não foi digitado corretamente");
                if (retorno.Contains("Erro na Consulta"))
                    throw new System.InvalidOperationException("Os caracteres digitados não correspondem com a imagem");
                return retorno;
            }
        }
    }

    3ª Pra facilitar, segue o exemplo de como utilizo essas classes para realizar uma consulta:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace ConsultaCNPJ
    {
        public partial class frmConCNPJ : Form
        {
            public clsEmpresa empresa;
            private ConsultaCNPJReceita consulta;
    
            public frmConCNPJ()
            {
                InitializeComponent();
            }
    
            private void frmConCNPJ_Load(object sender, EventArgs e)
            {
                carregarCaptcha();
            }
    
            private void btnCancelar_Click(object sender, EventArgs e)
            {
                Close();
            }
    
            private void btnTrocarImagem_Click(object sender, EventArgs e)
            {
                carregarCaptcha();
            }
    
            public void carregarCaptcha()
            {
                consulta = new ConsultaCNPJReceita();
                ttbLetras.Text = "";
                ttbLetras.Focus();
                Cursor cursor;
                cursor = this.Cursor;
                this.Cursor = Cursors.WaitCursor;
                Bitmap bit = consulta.GetCaptcha();
                if (bit != null)
                    picLetras.Image = bit;
                else
                    MessageBox.Show("Não foi possível recuperar a imagem de validação do site da Receita Federal");
                this.Cursor = cursor;
            }
    
            private void btnConsultar_Click(object sender, EventArgs e)
            {
                Cursor cursor;
                cursor = this.Cursor;
                try
                {
                    this.Cursor = Cursors.WaitCursor;
                    string tmp = consulta.Consulta(ttbCNPJ.Text, ttbLetras.Text);
    
                    if (tmp.Length > 0)
                    {
                        empresa = new clsEmpresa();
                        empresa.Cnpj = ttbCNPJ.Text;
                        empresa.Razaosocial = RecuperaColunaValor(tmp, Coluna.RazaoSocial);
                        empresa.Nomefantasia = RecuperaColunaValor(tmp, Coluna.NomeFantasia);
                        empresa.Endereco = RecuperaColunaValor(tmp, Coluna.EnderecoLogradouro);
                        empresa.Endereco += ", " + RecuperaColunaValor(tmp, Coluna.EnderecoNumero);
                        empresa.Bairro = RecuperaColunaValor(tmp, Coluna.EnderecoBairro);
                        empresa.Cep = RecuperaColunaValor(tmp, Coluna.EnderecoCEP);
                        empresa.Cnae = RecuperaColunaValor(tmp, Coluna.AtividadeEconomicaPrimaria);
                        //empresa.Cidade = RecuperaColunaValor(tmp, Coluna.EnderecoCidade);
                        //empresa.Estado = RecuperaColunaValor(tmp, Coluna.EnderecoEstado);
                        //Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    carregarCaptcha();
                }
    
                this.Cursor = cursor;
            }
    
    
    
            private enum Coluna
            {
                RazaoSocial = 0,
                NomeFantasia,
    
                AtividadeEconomicaPrimaria,
                AtividadeEconomicaSecundaria,
    
                NumeroDaInscricao,
                MatrizFilial,
                NaturezaJuridica,
    
                SituacaoCadastral,
                DataSituacaoCadastral,
                MotivoSituacaoCadastral,
    
                EnderecoLogradouro,
                EnderecoNumero,
                EnderecoComplemento,
                EnderecoCEP,
                EnderecoBairro,
                EnderecoCidade,
                EnderecoEstado
    
    
            };
    
            private String RecuperaColunaValor(String pattern, Coluna col)
            {
                String S = pattern.Replace("\n", "").Replace("\t", "").Replace("\r", "");
    
                switch (col)
                {
                    case Coluna.RazaoSocial:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NOME EMPRESARIAL -->", "<!-- Fim Linha NOME EMPRESARIAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.NomeFantasia:
                        {
                            S = StringEntreString(S, "<!-- Início Linha ESTABELECIMENTO -->", "<!-- Fim Linha ESTABELECIMENTO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.NaturezaJuridica:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NATUREZA JURÍDICA -->", "<!-- Fim Linha NATUREZA JURÍDICA -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.AtividadeEconomicaPrimaria:
                        {
                            S = StringEntreString(S, "<!-- Início Linha ATIVIDADE ECONOMICA -->", "<!-- Fim Linha ATIVIDADE ECONOMICA -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.AtividadeEconomicaSecundaria:
                        {
                            S = StringEntreString(S, "<!-- Início Linha ATIVIDADE ECONOMICA SECUNDARIA-->", "<!-- Fim Linha ATIVIDADE ECONOMICA SECUNDARIA -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.NumeroDaInscricao:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NÚMERO DE INSCRIÇÃO -->", "<!-- Fim Linha NÚMERO DE INSCRIÇÃO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.MatrizFilial:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NÚMERO DE INSCRIÇÃO -->", "<!-- Fim Linha NÚMERO DE INSCRIÇÃO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoLogradouro:
                        {
                            S = StringEntreString(S, "<!-- Início Linha LOGRADOURO -->", "<!-- Fim Linha LOGRADOURO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoNumero:
                        {
                            S = StringEntreString(S, "<!-- Início Linha LOGRADOURO -->", "<!-- Fim Linha LOGRADOURO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoComplemento:
                        {
                            S = StringEntreString(S, "<!-- Início Linha LOGRADOURO -->", "<!-- Fim Linha LOGRADOURO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoCEP:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoBairro:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoCidade:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoEstado:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.SituacaoCadastral:
                        {
                            S = StringEntreString(S, "<!-- Início Linha SITUAÇÃO CADASTRAL -->", "<!-- Fim Linha SITUACAO CADASTRAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.DataSituacaoCadastral:
                        {
                            S = StringEntreString(S, "<!-- Início Linha SITUAÇÃO CADASTRAL -->", "<!-- Fim Linha SITUACAO CADASTRAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.MotivoSituacaoCadastral:
                        {
                            S = StringEntreString(S, "<!-- Início Linha MOTIVO DE SITUAÇÃO CADASTRAL -->", "<!-- Fim Linha MOTIVO DE SITUAÇÃO CADASTRAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
    
                    default:
                        {
                            return S;
                        }
                }
            }
    
            private String StringEntreString(String Str, String StrInicio, String StrFinal)
            {
                int Ini;
                int Fim;
                int Diff;
                Ini = Str.IndexOf(StrInicio);
                Fim = Str.IndexOf(StrFinal);
                if (Ini > 0) Ini = Ini + StrInicio.Length;
                if (Fim > 0) Fim = Fim + StrFinal.Length;
                Diff = ((Fim - Ini) - StrFinal.Length);
                if ((Fim > Ini) && (Diff > 0))
                    return Str.Substring(Ini, Diff);
                else
                    return "";
            }
    
            private String StringSaltaString(String Str, String StrInicio)
            {
                int Ini;
                Ini = Str.IndexOf(StrInicio);
                if (Ini > 0)
                {
                    Ini = Ini + StrInicio.Length;
                    return Str.Substring(Ini);
                }
                else
                    return Str;
            }
    
            public string StringPrimeiraLetraMaiuscula(String Str)
            {
                string StrResult = "";
                if (Str.Length > 0)
                {
                    StrResult += Str.Substring(0, 1).ToUpper();
                    StrResult += Str.Substring(1, Str.Length - 1).ToLower();
                }
                return StrResult;
            }
    
    
        }
    }

    Qualquer dúvida me coloca a disposição.

    joaopaulosl@hotmail.com

    quarta-feira, 18 de fevereiro de 2015 03:02
  • João Paulo, mto obrigado seu exemplo funciona perfeitamente em winform. To tentando fazer funcionar em minha aplicação web mas não ta rolando. Vc tem algum exemplo em asp.net? eu devo estar vacilando em algum detalhe no cookie ou na espera do retorno. Obg!
    quarta-feira, 18 de fevereiro de 2015 13:53
  • Parabéns!!!
    Disponibilizei o projeto com as atualizações aqui
    • Editado Mr. GMSOFT terça-feira, 24 de fevereiro de 2015 11:56
    quarta-feira, 18 de fevereiro de 2015 13:58
  • Pessoal, para quem quer usar o exemplo do João Claudio em uma aplicação web basta jogar a variável _cookie na sessão e vejam o detalhe para obter a imagem no asp:image:

    public void GetCaptcha()

            {
                String htmlResult;
                using (var wc = new CookieAwareWebClient())
                {
                    wc.SetCookieContainer(_cookies);
                    wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                    wc.Headers[HttpRequestHeader.KeepAlive] = "300";
                    htmlResult = wc.DownloadString(urlBaseReceitaFederal + paginaPrincipal);
                }
                if (htmlResult.Length > 0)
                {
                    var wc2 = new CookieAwareWebClient();
                    wc2.SetCookieContainer(_cookies);
                    wc2.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                    wc2.Headers[HttpRequestHeader.KeepAlive] = "300";
                    byte[] data = wc2.DownloadData(urlBaseReceitaFederal + paginaCaptcha);
                    
                    Session["cookies"] = _cookies;

                    imgCaptcha.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(data, 0, data.Length);
                }
                
            }

    public void Consulta(string aCNPJ, string aCaptcha)
            {
                _cookies = (CookieContainer)Session["cookies"];
                
                var request = (HttpWebRequest)WebRequest.Create(urlBaseReceitaFederal + paginaValidacao);
                request.ProtocolVersion = HttpVersion.Version10;
                request.CookieContainer = _cookies;
                request.Method = "POST";
                
                string postData = "";
                postData = postData + "origem=comprovante&";
                postData = postData + "cnpj=" + new Regex(@"[^\d]").Replace(aCNPJ, string.Empty) + "&";
                postData = postData + "txtTexto_captcha_serpro_gov_br=" + aCaptcha + "&";
                postData = postData + "submit1=Consultar&";
                postData = postData + "search_type=cnpj";

                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;

                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();

                WebResponse response = request.GetResponse();
                StreamReader stHtml = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1"));
                String retorno = stHtml.ReadToEnd();

                if (retorno.Contains("Verifique se o mesmo foi digitado corretamente"))
                    throw new System.InvalidOperationException("O número do CNPJ não foi digitado corretamente");
                if (retorno.Contains("Erro na Consulta"))
                    throw new System.InvalidOperationException("Os caracteres digitados não correspondem com a imagem");

    Mais uma vez Obrigado João!!

    • Sugerido como Resposta Diogenes Nonato quarta-feira, 18 de fevereiro de 2015 16:17
    quarta-feira, 18 de fevereiro de 2015 16:16
  • Links fora do ar amigo :(
    segunda-feira, 23 de fevereiro de 2015 20:26
  • ainda quebrado amigo :(
    segunda-feira, 23 de fevereiro de 2015 20:27
  • Coloquei novamente clique AQUI
    segunda-feira, 23 de fevereiro de 2015 20:30
  • fora denovo!
    segunda-feira, 23 de fevereiro de 2015 20:31
  • Esta normal o link o ultimo que postei
    segunda-feira, 23 de fevereiro de 2015 20:39
  • Esta normal o link o ultimo que postei
    Perdão amigo, eu fui respondendo de acordo com o que fui lendo ontem mesmo, e cada link quebrado eu respondia, só pra deixar atualizado. Realmente está ok o ultimo q postou ontem, obrigado :)
    terça-feira, 24 de fevereiro de 2015 11:50
  • Por nada, vou atualizar os demais :)
    terça-feira, 24 de fevereiro de 2015 11:54
  • Caros, gostaria de agradecer à vocês e principalmente ao Mr. GMSoft.
    Precisei desse tipo de projeto e só o readequei para o asp.net mvc.

    Como também gosto de compartilhar, disponibilizei o mesmo em meu site pessoal com os devidos créditos é claro.

    Abs

    terça-feira, 24 de fevereiro de 2015 20:27
  • Parabéns, ficou bacana mesmo e bastante rápido a consulta ;)
    • Editado Mr. GMSOFT terça-feira, 24 de fevereiro de 2015 20:41
    terça-feira, 24 de fevereiro de 2015 20:39
  • Nenhum dos Links funciona, teria como upar novamente? Obrigado
    sexta-feira, 5 de junho de 2015 02:30
  • Bom dia Diogenes. Tentei converter isso para webforms, porem todas as vezes que executo mostra que o captcha está incorreto.

    Alguem já passou isso ai ? alguma luz no fim do tunel ?

    Obrigado

    quinta-feira, 11 de junho de 2015 11:56
  • Os links funcionam veja ai a versão MVC (Codigo Fonte) versão DEMO por Fabiano Nalin

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quinta-feira, 11 de junho de 2015 12:08
  • Ola Mr. GMSOFT

    Sim, eu consegui executar perfeitamente, porém estava tentando modificar o projeto para rodar em webforms, não em MVC. E quando rodo recebo uma exception dizendo que nao digitei o captcha corretamente. A minha dúvida é se alguem conseguiu rodar isso usando webforms ?

    quinta-feira, 11 de junho de 2015 12:37
  • Sim consegue o fato de ser MVC é por questão de distribuição de funcionalidades, vai ter de ler o código para poder entender e passar para webForms

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quinta-feira, 11 de junho de 2015 12:52
  • Bom dia.

    Gostaria que pudesse disponibilizar o link para download de consulta e retorno dos dados de um CNPJ.

    obrigado 

    segunda-feira, 15 de junho de 2015 17:00
  • Já passei acima

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 15 de junho de 2015 21:49
  • Fala Anderson, meu projeto asp.net ta funcionando normal. Vc ainda ta com o problema no captcha? Pode ser problema no cookie.
    quarta-feira, 17 de junho de 2015 18:55
  • Ola Diogenes, ainda estou com problemas., nao consegui fazer funcionar. 

    Consegue me enviar o projeto para eu ver o que estou fazendo de errado ??

    obrigado. meu e-mail é anderson.furuuti@gmail.com

    quinta-feira, 18 de junho de 2015 18:30
  •  #region "ConsultaCNPJ"
    
            private CookieContainer _cookies = new CookieContainer();
            private String urlBaseReceitaFederal = "http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/";
            private String paginaValidacao = "valida.asp";
            private String paginaPrincipal = "cnpjreva_solicitacao2.asp";
            private String paginaCaptcha = "captcha/gerarCaptcha.asp";
    
            public void GetCaptcha()
            {
                String htmlResult;
                try
                {
    
                    using (var wc = new CookieAwareWebClient())
                    {
                        wc.SetCookieContainer(_cookies);
                        wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                        wc.Headers[HttpRequestHeader.KeepAlive] = "300";
                        htmlResult = wc.DownloadString(urlBaseReceitaFederal + paginaPrincipal);
                    }
                    if (htmlResult.Length > 0)
                    {
                        var wc2 = new CookieAwareWebClient();
                        wc2.SetCookieContainer(_cookies);
                        wc2.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                        wc2.Headers[HttpRequestHeader.KeepAlive] = "300";
                        byte[] data = wc2.DownloadData(urlBaseReceitaFederal + paginaCaptcha);
    
                        Session["cookies"] = _cookies;
    
                        imgCaptcha.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(data, 0, data.Length);
                    }
                }
                catch (Exception ex)
                {
                    
                }
            }
    
            public void Recaptcha()
            {
                String htmlResult;
                try
                {
    
                    using (var wc = new CookieAwareWebClient())
                    {
                        wc.SetCookieContainer(_cookies);
                        wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                        wc.Headers[HttpRequestHeader.KeepAlive] = "300";
                        htmlResult = wc.DownloadString(urlBaseReceitaFederal + paginaPrincipal);
                    }
                    if (htmlResult.Length > 0)
                    {
                        var wc2 = new CookieAwareWebClient();
                        wc2.SetCookieContainer(_cookies);
                        wc2.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                        wc2.Headers[HttpRequestHeader.KeepAlive] = "300";
                        byte[] data = wc2.DownloadData(urlBaseReceitaFederal + paginaCaptcha);
    
                        Session["cookies"] = _cookies;
    
                        imgCaptcha.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(data, 0, data.Length);
    }
                }
                catch (Exception ex)
                {
                    
                }
    
    
            }
    
            public void Consulta(string aCNPJ, string aCaptcha)
            {
    
    
                try
                {
                    _cookies = (CookieContainer)Session["cookies"];
    
                    var request = (HttpWebRequest)WebRequest.Create(urlBaseReceitaFederal + paginaValidacao);
                    request.ProtocolVersion = HttpVersion.Version10;
                    request.CookieContainer = _cookies;
                    request.Method = "POST";
    
                    string postData = "";
                    postData = postData + "origem=comprovante&";
                    postData = postData + "cnpj=" + new Regex(@"[^\d]").Replace(aCNPJ, string.Empty) + "&";
                    postData = postData + "txtTexto_captcha_serpro_gov_br=" + aCaptcha + "&";
                    postData = postData + "submit1=Consultar&";
                    postData = postData + "search_type=cnpj";
    
                    byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.ContentLength = byteArray.Length;
    
                    Stream dataStream = request.GetRequestStream();
                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();
    
                    WebResponse response = request.GetResponse();
                    StreamReader stHtml = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1"));
                    String retorno = stHtml.ReadToEnd();
    
                    if (retorno.Contains("NOME EMPRESARIAL"))
                    {
                        txtNomeCliente.Text = RecuperaColunaValor(retorno, Coluna.NomeFantasia);
                        txtRazaoSocial.Text = RecuperaColunaValor(retorno, Coluna.RazaoSocial);
                        txtCep.Text = RecuperaColunaValor(retorno, Coluna.EnderecoCEP);
                        txtRua.Text = RecuperaColunaValor(retorno, Coluna.EnderecoLogradouro);
                        txtNumero.Text = RecuperaColunaValor(retorno, Coluna.EnderecoNumero);
                        txtComplemento.Text = RecuperaColunaValor(retorno, Coluna.EnderecoComplemento);
                        txtBairro.Text = RecuperaColunaValor(retorno, Coluna.EnderecoBairro);
                        if (!string.IsNullOrEmpty(RecuperaColunaValor(retorno, Coluna.EnderecoEstado)))
                            ddlEstado.SelectedValue = GetIdEstadoByName(RecuperaColunaValor(retorno, Coluna.EnderecoEstado));
    
                        if (!string.IsNullOrEmpty(RecuperaColunaValor(retorno, Coluna.EnderecoCidade)))
                        {
                            LoadAllCidadesByEstado(Convert.ToInt32(ddlEstado.SelectedValue), "LoadDataCliente");
                            ddlCidade.SelectedValue = GetIdCidadeByName(RecuperaColunaValor(retorno, Coluna.EnderecoCidade), Convert.ToInt32(ddlEstado.SelectedValue));
                        }
    
                        Recaptcha();
    
                        
                    }
    
                    if (retorno.Contains("Verifique se o mesmo foi digitado corretamente"))
                    {
                        pErrorMessageModalCliente.Visible = true;
                        lblErrorMessageModalCliente.Text = "O número do CNPJ não foi digitado corretamente.";
    
                        Recaptcha();
    
                        
                    }
                    if (retorno.Contains("Erro na Consulta"))
                    {                  
    
                        Recaptcha();
    
                        
                    }
                }
    
                catch (Exception ex)
                {
                    
                    Recaptcha();
    
                    
                }
    
            }
    
            private enum Coluna
            {
                RazaoSocial = 0,
                NomeFantasia,
    
                AtividadeEconomicaPrimaria,
                AtividadeEconomicaSecundaria,
    
                NumeroDaInscricao,
                MatrizFilial,
                NaturezaJuridica,
    
                SituacaoCadastral,
                DataSituacaoCadastral,
                MotivoSituacaoCadastral,
    
                EnderecoLogradouro,
                EnderecoNumero,
                EnderecoComplemento,
                EnderecoCEP,
                EnderecoBairro,
                EnderecoCidade,
                EnderecoEstado
    
    
            };
    
            private String RecuperaColunaValor(String pattern, Coluna col)
            {
                String S = pattern.Replace("\n", "").Replace("\t", "").Replace("\r", "");
    
                switch (col)
                {
                    case Coluna.RazaoSocial:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NOME EMPRESARIAL -->", "<!-- Fim Linha NOME EMPRESARIAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim().Replace("*", "");
                        }
                    case Coluna.NomeFantasia:
                        {
                            S = StringEntreString(S, "<!-- Início Linha ESTABELECIMENTO -->", "<!-- Fim Linha ESTABELECIMENTO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim().Replace("*", "");
                        }
                    case Coluna.NaturezaJuridica:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NATUREZA JURÍDICA -->", "<!-- Fim Linha NATUREZA JURÍDICA -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.AtividadeEconomicaPrimaria:
                        {
                            S = StringEntreString(S, "<!-- Início Linha ATIVIDADE ECONOMICA -->", "<!-- Fim Linha ATIVIDADE ECONOMICA -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.AtividadeEconomicaSecundaria:
                        {
                            S = StringEntreString(S, "<!-- Início Linha ATIVIDADE ECONOMICA SECUNDARIA-->", "<!-- Fim Linha ATIVIDADE ECONOMICA SECUNDARIA -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.NumeroDaInscricao:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NÚMERO DE INSCRIÇÃO -->", "<!-- Fim Linha NÚMERO DE INSCRIÇÃO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.MatrizFilial:
                        {
                            S = StringEntreString(S, "<!-- Início Linha NÚMERO DE INSCRIÇÃO -->", "<!-- Fim Linha NÚMERO DE INSCRIÇÃO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoLogradouro:
                        {
                            S = StringEntreString(S, "<!-- Início Linha LOGRADOURO -->", "<!-- Fim Linha LOGRADOURO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim().Replace("*", "");
                        }
                    case Coluna.EnderecoNumero:
                        {
                            S = StringEntreString(S, "<!-- Início Linha LOGRADOURO -->", "<!-- Fim Linha LOGRADOURO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoComplemento:
                        {
                            S = StringEntreString(S, "<!-- Início Linha LOGRADOURO -->", "<!-- Fim Linha LOGRADOURO -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim().Replace("*", "");
                        }
                    case Coluna.EnderecoCEP:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.EnderecoBairro:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim().Replace("*", "");
                        }
                    case Coluna.EnderecoCidade:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim().Replace("*", "");
                        }
                    case Coluna.EnderecoEstado:
                        {
                            S = StringEntreString(S, "<!-- Início Linha CEP -->", "<!-- Fim Linha CEP -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim().Replace("*", "");
                        }
                    case Coluna.SituacaoCadastral:
                        {
                            S = StringEntreString(S, "<!-- Início Linha SITUAÇÃO CADASTRAL -->", "<!-- Fim Linha SITUACAO CADASTRAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.DataSituacaoCadastral:
                        {
                            S = StringEntreString(S, "<!-- Início Linha SITUAÇÃO CADASTRAL -->", "<!-- Fim Linha SITUACAO CADASTRAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringSaltaString(S, "</b>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
                    case Coluna.MotivoSituacaoCadastral:
                        {
                            S = StringEntreString(S, "<!-- Início Linha MOTIVO DE SITUAÇÃO CADASTRAL -->", "<!-- Fim Linha MOTIVO DE SITUAÇÃO CADASTRAL -->");
                            S = StringEntreString(S, "<tr>", "</tr>");
                            S = StringEntreString(S, "<b>", "</b>");
                            return S.Trim();
                        }
    
    
    
                    default:
                        {
                            return S;
                        }
                }
            }
    
            private String StringEntreString(String Str, String StrInicio, String StrFinal)
            {
                int Ini;
                int Fim;
                int Diff;
                Ini = Str.IndexOf(StrInicio);
                Fim = Str.IndexOf(StrFinal);
                if (Ini > 0) Ini = Ini + StrInicio.Length;
                if (Fim > 0) Fim = Fim + StrFinal.Length;
                Diff = ((Fim - Ini) - StrFinal.Length);
                if ((Fim > Ini) && (Diff > 0))
                    return Str.Substring(Ini, Diff);
                else
                    return "";
            }
    
            private String StringSaltaString(String Str, String StrInicio)
            {
                int Ini;
                Ini = Str.IndexOf(StrInicio);
                if (Ini > 0)
                {
                    Ini = Ini + StrInicio.Length;
                    return Str.Substring(Ini);
                }
                else
                    return Str;
            }
    
            public string StringPrimeiraLetraMaiuscula(String Str)
            {
                string StrResult = "";
                if (Str.Length > 0)
                {
                    StrResult += Str.Substring(0, 1).ToUpper();
                    StrResult += Str.Substring(1, Str.Length - 1).ToLower();
                }
                return StrResult;
            }
    
            #endregion

    • Sugerido como Resposta Diogenes Nonato segunda-feira, 22 de junho de 2015 14:44
    segunda-feira, 22 de junho de 2015 14:42
  • Anderson, essa é a minha region inteira que está funcionando....

    Se não entender alguma parte me avisa.

    Abs

    segunda-feira, 22 de junho de 2015 14:43
  • Obrigado Diogenes..

    Me tira uma dúvida, esse código ainda é valido ?? Está funcionando ainda ??

    quarta-feira, 8 de julho de 2015 13:53
  • Opa, ta funcionando sim 100%

    • Sugerido como Resposta Diogenes Nonato segunda-feira, 20 de julho de 2015 14:39
    segunda-feira, 20 de julho de 2015 14:39
  • Amigo, aproveitando o tópico ainda, para CPF você conseguiu também? 

    Danilo Rodrigues

    terça-feira, 8 de setembro de 2015 14:10
  • Cara, pra CPF eu não fiz, mas eu já vi uns exemplos funcionando. Porém não traz tantas informações quanto ao cnpj. Se não me engano só traz o nome da pessoa.
    segunda-feira, 28 de setembro de 2015 16:45
  • Olá, voce ainda tem disponivel o link do exemplo em c#? se puder compartilhar novamente.

    Agradecido.


    Programe o mundo para uma vida melhor!

    quarta-feira, 24 de fevereiro de 2016 19:20
  • Opa, ta funcionando sim 100%

    Diogenes,

    Não estou conseguindo fazer funcionar este código. Sempre retorna como Erro de Consulta e submete a um Recaptcha.

    Vc tem o código atualizado ou funcionando?

    Abs,

    Danilo

    quarta-feira, 13 de julho de 2016 20:56
  • Danilo, este código está funcionando pra mim, acabei de testar.

    Se está retornando erro de consulta/captcha pode ser que você não esteja guardando e resgatando os cookies corretamente. Repare no exemplo que quando eu obtenho o captcha eu guardo o cookie na sessão, e depois quando vou consultar eu resgato o cookie da sessão.

    terça-feira, 19 de julho de 2016 12:39
  • pode me enviar o link do projeto Mr.Gmsoft?
    terça-feira, 19 de julho de 2016 13:49
  • Parabéns joaopaulosl o código funcionou perfeitamente!!!

    Alguém já implementou para CPF?


    Michel Guedes Campos

    segunda-feira, 29 de agosto de 2016 20:56
  • O link está quebrado, poderia disponibilizar novamente ?
    sexta-feira, 18 de novembro de 2016 12:07
  • Boa tarde, parece que tem um erro com o link. Quando rodo o sistema, gera uma exceção nessa parte:

    htmlResult = wc.DownloadString(urlBaseReceitaFederal + paginaPrincipal);

    que fica dentro desse trecho:

    public JsonResult GetCaptcha()
            {

                var htmlResult = string.Empty;

                using (var wc = new Infra.CookieAwareWebClient(_cookies))
                {
                    wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; Synapse)";
                    wc.Headers[HttpRequestHeader.KeepAlive] = "300";
                    htmlResult = wc.DownloadString(urlBaseReceitaFederal + paginaPrincipal);
                }

    mais alguém com esse erro?

    segunda-feira, 9 de janeiro de 2017 14:57
  • Boa tarde! Alguém conseguiu o link? Conseguem compartilhar por favor?
    quinta-feira, 2 de fevereiro de 2017 19:05
  • Houve uma mudança de url no site da receita e por isso removi o link e vou fazer as correções e disponibilizo , mais caso queira algo bem rápido e que dá menos trabalho pode usar a api desse site
    Sintaxe bem fácil e o retorno é JSON (Tem limite para consultas simultâneas):

    string retorno = string.empty;
    string cnpj="insira aqui o cnpj";
    string api = string.Format("https://www.receitaws.com.br/v1/cnpj/{0}",cnpj);
    using(WebClient wc = new WebCient())
    {
       retorno = wc.DownloadString(api);
    }
    MessageBox.Show(retorno);
    O ideal é que deserialize o retorno JSON para um classe e seja feliz!

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    sábado, 4 de fevereiro de 2017 11:09
  • Houve uma mudança de url no site da receita e por isso removi o link e vou fazer as correções e disponibilizo , mais caso queira algo bem rápido e que dá menos trabalho pode usar a api desse site
    Sintaxe bem fácil e o retorno é JSON (Tem limite para consultas simultâneas):

    string retorno = string.empty;
    string cnpj="insira aqui o cnpj";
    string api = string.Format("https://www.receitaws.com.br/v1/cnpj/{0}",cnpj);
    using(WebClient wc = new WebCient())
    {
       retorno = wc.DownloadString(api);
    }
    MessageBox.Show(retorno);
    O ideal é que deserialize o retorno JSON para um classe e seja feliz!

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    O problema desta aplicação é que na modalidade gratuita só retorna CNPJ cadastrados já na base de dados deles.. Se não há na base de dados não é feita a pesquisa no site da receita.. teria como disponibilizar o link atual da aplicação? Fui lendo e clicando em link por link e todos fora do ar..
    segunda-feira, 17 de abril de 2017 15:00
  • Mr. GMSOFT poderia disponibilizar novamente o link?

    Grato.

    terça-feira, 16 de maio de 2017 05:56
  • Ocorreram mudanças no site da receita por isso tirei do ar o exemplo, mais ainda irei efetuar os ajustes para funcionar e disponibilizo novamente

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quinta-feira, 18 de maio de 2017 14:21
  • Olá Mr. GMSOFT ! 

    Ainda tem aquele exemplo ? 

    obrigada!

    quarta-feira, 24 de maio de 2017 15:24
  • Tem alguma novidade referente a mudança no site da receita? Não estou conseguindo capturar os CAPTCHA
    quinta-feira, 9 de novembro de 2017 19:07
  • Boa tarde a todos!

    Não sei se conseguiram resolver o problema, até porque o site da receita modificou o captcha de imagem para o reCaptcha do Google.

    O que consegui fazer é encontrar uma outra página através do botão "Captcha Sonoro", então no código do nosso amigo Lucio Rogerio SP eu alterei o link "cnpjreva_solicitacao2.asp" para "Cnpjreva_solicitacao3.asp" e funcionou.

    Mas estou com problemas de timeout algumas vezes quando tento alterar o captcha ou consultar novamente.

    Alguém teria uma ideia de como resolver?

    domingo, 22 de julho de 2018 20:41
  • Para os futuros visitantes que estiverem buscando uma API de consultas ao CNPJ deem uma olhada em:

    https://www.cnpja.com.br/

    sexta-feira, 7 de fevereiro de 2020 13:07
  • Link está indisponível
    terça-feira, 19 de maio de 2020 16:54
  • Tenho dúvida como usar esta api CNPJA em vbnet em windows forms .. alguém tem um exemplo em vbnet para demostrar como forma de contribuição para a comunidade???? Alguém se arrisca neste impasse?
    terça-feira, 19 de maio de 2020 17:08
  • Infelizmente não esta mais funcional , há algum tempo , e não tive como atualizar devido ao tempo

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 10 de junho de 2020 11:56
  • Eu utilizo o receitaws para fazer as consultas via cnpj que necessito, os codigos em c# todos podem ser convertido com ajustes é claro nesse link

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 10 de junho de 2020 12:04
  • link off, pode disponibilizar novsmente?
    terça-feira, 16 de junho de 2020 03:28
  • Efetuar consultas pelo receitaws é simples e prático, mas há limitações.

    Não é 100% atualizado em relação ao site da RFB e, no plano gratuito é possível somente três consultas por minuto.


    MARIANO1776

    segunda-feira, 10 de janeiro de 2022 23:14