public Fornecedor ObterDados(CookieContainer _cookies, string aCNPJ, string aCaptcha, bool bUsarSleap = false) { Random aleatorio = new Random(); if (bUsarSleap) { System.Threading.Thread.Sleep(aleatorio.Next(5000, 10000)); } string cnpj = new Regex(@"[^\d]").Replace(aCNPJ, string.Empty); var request = (HttpWebRequest)WebRequest.Create(urlBaseReceitaFederal + paginaValidacao); request.ProtocolVersion = HttpVersion.Version10; request.CookieContainer = _cookies; request.Method = "POST"; var postData = string.Empty; postData += "origem=comprovante&"; postData += "cnpj=" + cnpj + "&"; postData += "txtTexto_captcha_serpro_gov_br=" + aCaptcha + "&"; postData += "submit1=Consultar&"; postData += "search_type=cnpj"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; var dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); var response = request.GetResponse(); var stHtml = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1")); var strHtmlFornecedor = stHtml.ReadToEnd(); if (strHtmlFornecedor.Contains("Verifique se o mesmo foi digitado corretamente")) { throw new BusinessException("O número do CNPJ não foi localizado na Receita Federal"); } if (strHtmlFornecedor.Contains("0,0")) { throw new BusinessException("Os caracteres não conferem com a imagem"); } if (strHtmlFornecedor.Length > 0) { Fornecedor fornecedor = MontarObjFornecedor(cnpj, strHtmlFornecedor); if (fornecedor != null) { if (bUsarSleap) { System.Threading.Thread.Sleep(aleatorio.Next(5000, 10000)); } var requestQAS = (HttpWebRequest)HttpWebRequest.Create(urlBaseReceitaFederal + paginaQuadroSocietario); requestQAS.CookieContainer = _cookies; requestQAS.Method = "GET"; var res = (HttpWebResponse)requestQAS.GetResponse(); StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1")); string strHtmlQuadroSocietario = sr.ReadToEnd(); MontarObjFornecedorQuadroSocietario(fornecedor, strHtmlQuadroSocietario); //string UserName; //try //{ // UserName = HttpContext.Current.User.Identity.Name; //} //catch (Exception) //{ // UserName = "******"; //} //fornecedor.UsuarioInclusao = UserName; //fornecedor.DataInclusao = DateTime.Now.ToString(); var fornecedorDao = new FornecedorDao(); fornecedor.id = fornecedorDao.AtualizaDados(fornecedor); return(fornecedor); // fornecedorDao.MarcaVisitado(fornecedor.CnpjCpf, UserName); } } return(null); }
public Fornecedor MontarObjFornecedor(string cnpj, string responseFromServer) { Fornecedor fornecedor = new Fornecedor(); if (responseFromServer.IndexOf("NOME EMPRESARIAL") > 0) { string textoHTML = Regex.Replace(responseFromServer, @"<[^>]*>", string.Empty); textoHTML = textoHTML.Substring(textoHTML.IndexOf("NÚMERO DE INSCRIÇÃO")); textoHTML = textoHTML.Substring(0, textoHTML.IndexOf("Aprovado pela Instrução Normativa")).Replace("NÚMERO DE INSCRIÇÃO", "").Trim(); textoHTML = Regex.Replace(textoHTML, " ", string.Empty).Trim(); fornecedor.CnpjCpf = cnpj; textoHTML = textoHTML.Replace(textoHTML.Substring(0, textoHTML.IndexOf("\r\n")), ""); fornecedor.Tipo = textoHTML.Substring(0, textoHTML.IndexOf("COMPROVANTE")).Trim(); textoHTML = textoHTML.Substring(textoHTML.IndexOf("DATA DE ABERTURA")).Replace("DATA DE ABERTURA", "").Trim(); fornecedor.DataAbertura = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); textoHTML = textoHTML.Substring(textoHTML.IndexOf("NOME EMPRESARIAL")).Replace("NOME EMPRESARIAL", "").Trim(); fornecedor.RazaoSocial = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); textoHTML = textoHTML.Substring(textoHTML.IndexOf("(NOME DE FANTASIA)")).Replace("(NOME DE FANTASIA)", "").Trim(); fornecedor.NomeFantasia = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.NomeFantasia.Substring(0, 1) == "*") { fornecedor.NomeFantasia = fornecedor.RazaoSocial; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("CÓDIGO E DESCRIÇÃO DA ATIVIDADE ECONÔMICA PRINCIPAL")).Replace("CÓDIGO E DESCRIÇÃO DA ATIVIDADE ECONÔMICA PRINCIPAL", "").Trim(); fornecedor.AtividadePrincipal = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.AtividadePrincipal.Substring(0, 1) == "*") { fornecedor.AtividadePrincipal = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("CÓDIGO E DESCRIÇÃO DAS ATIVIDADES ECONÔMICAS SECUNDÁRIAS")).Replace("CÓDIGO E DESCRIÇÃO DAS ATIVIDADES ECONÔMICAS SECUNDÁRIAS", "").Trim(); var sAtividadeSecundaria = textoHTML.Substring(0, textoHTML.IndexOf("CÓDIGO E DESCRIÇÃO DA NATUREZA JURÍDICA")).Trim(); if (sAtividadeSecundaria.Equals("Não informada")) { fornecedor.AtividadeSecundaria = new string[0]; } else { sAtividadeSecundaria = sAtividadeSecundaria.Replace(" ", "").Replace("\t", "").Replace("\r\n\r\n\r\n\r\n", ""); fornecedor.AtividadeSecundaria = sAtividadeSecundaria.Split(new string[] { "\r\n" }, StringSplitOptions.None); } textoHTML = textoHTML.Substring(textoHTML.IndexOf("CÓDIGO E DESCRIÇÃO DA NATUREZA JURÍDICA")).Replace("CÓDIGO E DESCRIÇÃO DA NATUREZA JURÍDICA", "").Trim(); fornecedor.NaturezaJuridica = textoHTML.Substring(0, textoHTML.IndexOf("PORTE DA EMPRESA")).Replace("PORTE DA EMPRESA", "").Trim(); if (fornecedor.NaturezaJuridica.Equals("LOGRADOURO")) { fornecedor.NaturezaJuridica = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("LOGRADOURO")).Replace("LOGRADOURO", "").Trim(); fornecedor.Logradouro = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Logradouro.Equals("NÚMERO")) { fornecedor.Logradouro = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("NÚMERO")).Replace("NÚMERO", "").Trim(); fornecedor.Numero = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Numero.Equals("COMPLEMENTO")) { fornecedor.Numero = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("COMPLEMENTO")).Replace("COMPLEMENTO", "").Trim(); fornecedor.Complemento = Utils.SingleSpacedTrim(textoHTML.Substring(0, textoHTML.IndexOf("\r\n"))).Trim(); if (fornecedor.Complemento.Equals("CEP")) { fornecedor.Complemento = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("CEP")).Replace("CEP", "").Trim(); fornecedor.Cep = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim().Replace(".", ""); if (fornecedor.Cep.Equals("DISTRITO")) { fornecedor.Cep = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("DISTRITO")).Replace("DISTRITO", "").Trim(); fornecedor.Bairro = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Bairro.Equals("MUNICÍPIO")) { fornecedor.Bairro = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("MUNICÍPIO")).Replace("MUNICÍPIO", "").Trim(); fornecedor.Cidade = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Cidade.Equals("UF")) { fornecedor.Cidade = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("UF")).Replace("UF", "").Trim(); fornecedor.Uf = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Uf.Equals("ENDEREÇO ELETRÔNICO")) { fornecedor.Uf = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("ENDEREÇO ELETRÔNICO")).Replace("ENDEREÇO ELETRÔNICO", "").Trim(); fornecedor.Email = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Email.Equals("TELEFONE")) { fornecedor.Email = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("TELEFONE")).Replace("TELEFONE", "").Trim(); fornecedor.Telefone = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Telefone.Equals("ENTE FEDERATIVO RESPONSÁVEL(EFR)")) { fornecedor.Telefone = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("ENTE FEDERATIVO RESPONSÁVEL (EFR)")).Replace("ENTE FEDERATIVO RESPONSÁVEL (EFR)", "").Trim(); fornecedor.EnteFederativoResponsavel = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.EnteFederativoResponsavel.Substring(0, 1) == "*") { fornecedor.EnteFederativoResponsavel = ""; } textoHTML = ReplaceFirst(textoHTML.Substring(textoHTML.IndexOf("SITUAÇÃO CADASTRAL")), "SITUAÇÃO CADASTRAL", "").Trim(); fornecedor.Situacao = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.Situacao.Equals("DATA DA SITUAÇÃO CADASTRAL")) { fornecedor.Situacao = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("DATA DA SITUAÇÃO CADASTRAL")).Replace("DATA DA SITUAÇÃO CADASTRAL", "").Trim(); fornecedor.DataSituacao = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.DataSituacao.Equals("MOTIVO DE SITUAÇÃO CADASTRAL")) { fornecedor.DataSituacao = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("MOTIVO DE SITUAÇÃO CADASTRAL")).Replace("MOTIVO DE SITUAÇÃO CADASTRAL", "").Trim(); fornecedor.MotivoSituacao = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.MotivoSituacao.Equals("SITUAÇÃO ESPECIAL")) { fornecedor.MotivoSituacao = ""; } textoHTML = ReplaceFirst(textoHTML.Substring(textoHTML.IndexOf("SITUAÇÃO ESPECIAL")), "SITUAÇÃO ESPECIAL", "").Trim(); fornecedor.SituacaoEspecial = textoHTML.Substring(0, textoHTML.IndexOf("\r\n")).Trim(); if (fornecedor.SituacaoEspecial.Substring(0, 1) == "*") { fornecedor.SituacaoEspecial = ""; } textoHTML = textoHTML.Substring(textoHTML.IndexOf("DATA DA SITUAÇÃO ESPECIAL")).Replace("DATA DA SITUAÇÃO ESPECIAL", "").Trim(); fornecedor.DataSituacaoEspecial = textoHTML; if (fornecedor.DataSituacaoEspecial.Substring(0, 1) == "*") { fornecedor.DataSituacaoEspecial = ""; } return(fornecedor); } else if (responseFromServer.IndexOf("Verifique se o mesmo foi digitado corretamente") > 0) { throw new BusinessException("CNPJ não localizado junto a receita federal."); } else if (responseFromServer.IndexOf("Digite os caracteres acima:") > 0) { throw new BusinessException("Capcha incorreto."); } return(null); }