Usuário com melhor resposta
Consulta CNPJ na Receita Federal em C#

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&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
Respostas
-
- Sugerido como Resposta Glauber Marcelino da Silva (MrGmsoft) sexta-feira, 5 de dezembro de 2014 13:17
- Marcado como Resposta Jone Cunha sexta-feira, 5 de dezembro de 2014 13:39
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 11:54
-
Segue o link aqui
- Marcado como Resposta Levi DomingosModerator terça-feira, 23 de dezembro de 2014 17:09
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 11:55
Todas as Respostas
-
- Sugerido como Resposta Glauber Marcelino da Silva (MrGmsoft) sexta-feira, 5 de dezembro de 2014 13:17
- Marcado como Resposta Jone Cunha sexta-feira, 5 de dezembro de 2014 13:39
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 11:54
-
-
-
Segue Link
- Sugerido como Resposta Gilberto Otsuka segunda-feira, 22 de dezembro de 2014 17:08
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 11:54
-
-
Preciso de passar um CNPJ e com isso tem que retornar os dados da empresa.
Como faço isso em c#.net ??
help me !
- Mesclado Levi DomingosModerator terça-feira, 23 de dezembro de 2014 17:11 duplicado
-
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
-
-
-
-
-
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
-
-
Segue o link aqui
- Marcado como Resposta Levi DomingosModerator terça-feira, 23 de dezembro de 2014 17:09
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 11:55
-
-
-
-
-
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 ?
-
-
-
-
-
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. -
-
-
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
-
-
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;
-
-
-
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.
-
-
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);
-
-
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.
-
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
-
http://www.4shared.com/file/RFaws3WLba/CnpjReceitaJeffAsp.html?
Não sei onde estou pecando, está passando tudo certo, porém o único retorno e o site da receita manda é isso.
-
-
-
-
-
-
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 "Consultar".</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: </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&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: </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&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>
-
-
- Sugerido como Resposta Glauber Marcelino da Silva (MrGmsoft) sexta-feira, 6 de fevereiro de 2015 08:51
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 11:56
-
-
-
-
-
-
-
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
- Sugerido como Resposta Lucio Rogerio SPBanned terça-feira, 16 de junho de 2015 09:04
-
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!
-
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 11:56
-
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
-
-
-
-
-
-
-
-
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
-
Parabéns, ficou bacana mesmo e bastante rápido a consulta ;)
- Editado Glauber Marcelino da Silva (MrGmsoft) terça-feira, 24 de fevereiro de 2015 20:41
-
-
-
Os links funcionam veja ai a versão MVC (Codigo Fonte) versão DEMO por Fabiano Nalin
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
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 ?
-
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
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
-
-
-
-
#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
-
-
-
Opa, ta funcionando sim 100%
- Sugerido como Resposta Diogenes Nonato segunda-feira, 20 de julho de 2015 14:39
-
-
-
-
-
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.
-
-
-
-
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?
-
-
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!A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
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
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..
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!
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
-
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
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
-
-
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?
-
-
-
-
-
-