public bool verificarSeAcaoExiste(string Acao) { bool consultaRealizada = false; try { WebRequest request = WebRequest.Create("https://br.advfn.com/bolsa-de-valores/bovespa/" + Acao + "/cotacao"); WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII); string Texto = reader.ReadToEnd(); var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(Texto); decimal preco = 0; decimal porcentagem = 0; foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='price-info']")) { ClsRetornoAcao record = new ClsRetornoAcao(); foreach (HtmlNode node2 in node.SelectNodes(".//span[@id]")) { string attributeValue = node2.GetAttributeValue("id", "class"); if (attributeValue == "quoteElementPiece1") { preco = Convert.ToDecimal(node2.InnerText); } else if (attributeValue == "quoteElementPiece2") { porcentagem = Convert.ToDecimal(node2.InnerText); } } } if (preco > 0) { consultaRealizada = true; } } catch (Exception ex) { this.gerarLogErro(ex.Message + " - Erro ao consultar Ação no site: https://br.advfn.com/bolsa-de-valores/bovespa/"); // MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } return(consultaRealizada); }
//Consultar Ações public ClsRetornoAcao consultarAcao(string Acao) { ClsRetornoAcao e = null; try { if (config.Chave_Api != "" && config.Chave_Api != null) { using (WebClient wb = new WebClient()) { var json = ""; try { lblRecado.Visible = false; json = wb.DownloadString("https://api.hgbrasil.com/finance/stock_price?key=" + config.Chave_Api.Trim() + "&symbol=" + Acao.ToUpper().Trim()); } catch (Exception) { try { lblRecado.Visible = true; lblRecado.Text = "Chave de consulta 1 venceu!"; if (config.Chave_Api_02.Trim() != "") { json = wb.DownloadString("https://api.hgbrasil.com/finance/stock_price?key=" + config.Chave_Api_02.Trim() + "&symbol=" + Acao.ToUpper().Trim()); } } catch (Exception) { if (config.Chave_Api_03.Trim() != "") { json = wb.DownloadString("https://api.hgbrasil.com/finance/stock_price?key=" + config.Chave_Api_03.Trim() + "&symbol=" + Acao.ToUpper().Trim()); } } } JavaScriptSerializer serializer = new JavaScriptSerializer(); var consulta = serializer.Deserialize <ClsInformacaoAcao>(json.Replace(Acao.ToUpper().Trim(), "Acao")); if (consulta != null) { if (consulta.results.Acao == null) { MessageBox.Show("Ação não encontrada, verifique se digitou corretamente!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (consulta.results.Acao.symbol == null) { if (gerarManual == true) { MessageBox.Show("Ação não encontrada, verifique se digitou corretamente!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { this.gerarLogErro("Ação não encontrada, verifique se digitou corretamente! - Erro ao consultar Ações"); } } else { e = new ClsRetornoAcao(); e.simbolo = Acao.ToUpper().Trim(); e.nomeAcao = consulta.results.Acao.name.ToString().ToUpper(); e.regiao = consulta.results.Acao.region.ToString().ToUpper(); e.moeda = consulta.results.Acao.currency.ToString().ToUpper(); e.cap_mercado = consulta.results.Acao.market_cap; e.preco = consulta.results.Acao.price; e.mudanca_porcentagem = consulta.results.Acao.change_percent; e.data_Atualizacao = consulta.results.Acao.updated_at; if (listagemAcao == null) { listagemAcao = new List <ClsRetornoAcao>(); } //limpar caso exista registro this.Remover(Acao, false); listagemAcao.Add(e); this.CarregarGrid(); //Salvar Histórico a atualizar cadastro para monitorar if (config != null) { if (config.historicoAcoesPesquisadas == null) { config.historicoAcoesPesquisadas = new List <ClsRetornoAcao>(); } config.historicoAcoesPesquisadas.Add(e); if (pesquisaManual == false) { this.salvar(e.simbolo, e.mudanca_porcentagem, e.preco, false); } } } } } } } else { MessageBox.Show("Não existe Chave API cadastrada, verifique para poder fazer consulta!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { if (pesquisaManual == true) { MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { this.gerarLogErro(ex.Message + " - Erro ao consultar Ações"); } //O servidor remoto retornou um erro: (403) Proibido. if (ex.Message.Contains("O servidor remoto retornou um erro: (403) Proibido.")) { } } return(e); }
private bool ConsultaAcoesWebRequest(string acao) { bool consultaRealizada = false; ClsRetornoAcao e = null; try { WebRequest request = WebRequest.Create("https://br.advfn.com/bolsa-de-valores/bovespa/" + acao + "/cotacao"); WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII); string Texto = reader.ReadToEnd(); var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(Texto); decimal preco = 0; decimal porcentagem = 0; foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='price-info']")) { ClsRetornoAcao record = new ClsRetornoAcao(); foreach (HtmlNode node2 in node.SelectNodes(".//span[@id]")) { string attributeValue = node2.GetAttributeValue("id", "class"); if (attributeValue == "quoteElementPiece1") { preco = Convert.ToDecimal(node2.InnerText); } else if (attributeValue == "quoteElementPiece2") { porcentagem = Convert.ToDecimal(node2.InnerText); } } } //Atualizar grid if (preco > 0) { consultaRealizada = true; e = new ClsRetornoAcao(); e.simbolo = acao.ToUpper().Trim(); e.nomeAcao = acao.ToUpper().Trim(); e.regiao = "BRAZIL/SAO PAULO"; e.moeda = "BRL"; e.cap_mercado = 0; e.preco = preco; e.mudanca_porcentagem = porcentagem; e.data_Atualizacao = DateTime.Now; if (listagemAcao == null) { listagemAcao = new List <ClsRetornoAcao>(); } //limpar caso exista registro this.Remover(acao, false); listagemAcao.Add(e); //Salvar Histórico a atualizar cadastro para monitorar if (config != null) { if (config.historicoAcoesPesquisadas == null) { config.historicoAcoesPesquisadas = new List <ClsRetornoAcao>(); } config.historicoAcoesPesquisadas.Add(e); if (pesquisaManual == false) { this.salvar(e.simbolo, e.mudanca_porcentagem, e.preco, false); } } if (pesquisaManual == true) { this.CarregarGrid(); } } } catch (Exception ex) { this.gerarLogErro(ex.Message + " - Erro ao consultar Ação no site: https://br.advfn.com/bolsa-de-valores/bovespa/"); // MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } return(consultaRealizada); }