コード例 #1
0
        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);
        }