Configurações do webservice do banco central – Cotações diversas
Olá pessoal!
Outro dia precisei criar um serviço para atualizar a cotação do dólar diariamente. Para quem não sabe o banco central disponibiliza um webservice com diversas cotações como: dólar, euro, ouro etc.
O webservice é bem simples. Ele possui vários métodos conforme listado abaixo:
Segue abaixo a descrição de cada método:
getUltimoValorVO – Recupera o último valor de uma determinada série e retorna um objeto do tipo WSSerieVO.
Parâmetros:
long codigoSerie – Código da série.
Retorno:
WSSerieVO – Objeto série.
GetUltimoValorXML – Recupera o último valor de uma determinada série e retorna o resultado em formato XML.
Parâmetros:
long codigoSerie – Código da série.
Retorno:
String – String contendo o resultado da consulta em formato XML.
getValor – Recupera o valor de uma série em uma determinada data (dd/MM/aaaa).
Parâmetros:
long codigoSerie – Código da série.
String data – String contendo a data (dd/MM/aaaa) do valor a ser pesquisado.
Retorno:
BigDecimal – Objeto contendo o valor.
getValorEspecial – Recupera o valor de uma série especial em um período.
Parâmetros:
long codigoSerie – Código da série.
String data – String contendo a data (dd/MM/aaaa) inicial.
String dataFim – String contendo a data (dd/MM/aaaa) final.
Retorno:
BigDecimal – Objeto contendo o valor.
getValoresSeriesXML – Recupera os valores de uma ou mais séries dentro de um determinado período.O resultado da consulta é devolvido ao cliente em formato XML.
Parâmetros:
long[] codigosSeries – Lista(array) dos códigos das séries.
String dataInicio – String contendo a data (dd/MM/aaaa) inicial.
String dataFim – String contendo a data (dd/MM/aaaa) final.
Retorno:
String – String contendo o resultado da consulta em formato XML.
getValoresSeriesVO – Recupera os valores de uma ou mais séries dentro de um determinado período e retorna o resultado em forma de Array de objetos do tipo WSSerieVO.
Parâmetros:
long[] codigosSeries – Lista(array) dos códigos das séries.
String dataInicio – String contendo a data (dd/MM/aaaa) inicial.
String dataFim – String contendo a data (dd/MM/aaaa) final.
Retorno:
WSSerieVO – Lista(array) de objeto série.
O endereço do webservice é: https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl
O problema que tive com esse serviço foi em conseguir a cotação de venda do dólar, pois, o código 1 é o preço de compra. Fiz muita pesquisa na net e não achei uma tabela de referência do códigos.
Consegui entrar em contato com o banco central e eles me passaram a lista de todos os códigos que são utilizados neste serviço. Segue a lista abaixo:
CÓDIGO | NOME |
1 | Dólar (venda) |
10813 | Dólar (compra) |
21619 | Euro (venda) |
21620 | Euro (compra) |
21621 | Iene (venda) |
21622 | Iene (compra) |
21623 | Libra esterlina (venda) |
21624 | Libra esterlina (compra) |
21625 | Franco Suíço (venda) |
21626 | Franco Suíço (compra) |
21627 | Coroa Dinamarquesa (venda) |
21628 | Coroa Dinamarquesa (compra) |
21629 | Coroa Norueguesa (venda) |
21630 | Coroa Norueguesa (compra) |
21631 | Coroa Sueca (venda) |
21632 | Coroa Sueca (compra) |
21633 | Dólar Australiano (venda) |
21634 | Dólar Australiano (compra) |
21635 | Dólar Canadense (venda) |
21636 | Dólar Canadense (compra) |
Também no site do Banco Central (www.bcb.gov.br – menu Câmbio de capitais estrangeiros – Taxas de câmbio), na opção “Cotações e Boletins”, podem ser consultadas as cotações diárias de outras moedas, para compra e venda. Nesse mesmo endereço, na opção “Todas as moedas”, pode-se acessar o arquivo CSV, contendo as cotações de fechamento dos últimos 7 dias de todas as moedas. Esse arquivo também pode ser acessado diretamente pela seguinte URL: http://www4.bcb.gov.br/Download/fechamento/[AAAAMMDD].csv, onde o padrão AAAAMMDD deve ser substituído pelo ano, mês e dia da cotação desejada.
Um dos mecanismos utilizados para automatizar o acesso a esse arquivo é a utilização do aplicativo WGET, disponível para Windows em http://gnuwin32.sourceforge.net/packages/wget.htm e também disponível para plataforma Linux ou Unix.
Exemplo de linha de comando para Windows:
# wget http://www4.bcb.gov.br/Download/fechamento/[AAAAMMDD].csv
Exemplo de comandos Unix:
——
$ D=`date -d “1 day ago” +%Y%m%d`
$ D=”http://www4.bcb.gov.br/Download/fechamento/“$D”.csv” # [AAAAMMDD].csv
$ wget $D
—-
Cabe ressaltar, no entanto, que o Banco Central do Brasil não se compromete em manter inalteradas as estruturas do site nem dos arquivos nele contidos. Eventuais alterações podem impactar soluções de automação construídas com base na sua estrutura atual.
Consumindo o serviço
No meu caso, criei um Job do SSIS (SQL Server Integration Services) que consome esse webservice e em seguida executa uma task que atualiza a tabela. O processo é muito parecido com uma aplicação web comum.
1 – Adicione uma script task e uma execute sql task presentes no SSIS Toolbox
2 – Clique com o botão direito em seu projeto e vá em Add Service Reference…
3 – Adicionei uma como uma referencia a um webservice comum. Então na janela que se abriu clique em Advanced conforme mostrado abaixo:
4 – Coloque o endereço do webservice, clique na seta para ir ao endereço e clique em Add Reference. Provavelmente você irá receber um aviso de segurança de SSL. Clique em sim e na mensagem de bloqueio que aparece logo abaixo da caixa onde você coloca o endereço do serviço clique em permitir conteúdo bloqueado. Após esse processo você terá o resultado abaixo:
5 – Em seguida utilize o código abaixo para buscar os dados do serviço. Utilizei o método getUltimoValorVO porque este método pega a ultima cotação cadastrada pelo BC.
public void Main()
{
//Referencia ao serviço do banco central https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl
var cotacaoService = new CotacoesService.FachadaWSSGSService();
Dts.Variables["Cotacao"].Value = cotacaoService.getUltimoValorVO(10813).ultimoValor.svalor;
Dts.TaskResult = (int)ScriptResults.Success;
}
Na 6ª linha você pode observar o trecho “Dts.Variables[“Cotacao”]”. Essa é uma variável que criei do tipo string. Essa variável foi criada na aba “Variables” conforme abaixo:
Na SQL Task eu utilizei o seguinte código:
DECLARE @lastDate AS VARCHAR(8) SET @lastDate = (SELECT TOP 1 CONVERT(CHAR, CAST(data_cotacao AS DATETIME), 112) FROM dbo.Table WHERE CONVERT(CHAR, CAST(data_cotacao AS DATETIME), 112) = CONVERT(CHAR, CAST(GETDATE() AS DATETIME), 112)) IF CONVERT(CHAR, CAST(GETDATE() AS DATETIME), 112) = @lastDate BEGIN UPDATE dbo.TABLE SET cotacao = (?) WHERE CONVERT(CHAR, CAST(data_cotacao AS DATETIME), 112) = @lastDate END ELSE BEGIN INSERT INTO dbo.TABLE(cotacao, data_cotacao) VALUES ( ? , CAST(GETDATE() AS DATE) ) END |
Se existir uma cotação para o dia eu apenas atualizo essa cotação, se não existir eu vou inserir um novo registro na table.
Basicamente esse é o procedimento para criar uma rotina que pega a cotação de uma moeda de uma fonte confiável (Banco Central do Brasil) e atualiza diariamente em um table no banco de dados.
Esse serviço pode ser utilizado de outras formas e o foco deste post foi informar o códigos utilizados para pegar o valor da cotação desejada.
Neste link você consegue mais informações sobre cada código disponibilizado neste txt.
Neste post eu mostro como configurar o ambiente e fazer o deploy de seu projeto SSIS no SQL Server!
Até a próxima!
Prezados boa noite,
Gostaria de utilizar o serviço , porem preciso de todos os códigos e nomes das moedas. Preciso do código/seria do HKD (DOLAR HONG KONG). Não consegui encontrar uma tabela com todas as moedas.
Atenciosamente,
Evandro Luiz
Evandro infelizmente essa cotação não é fornecida. Eu consegui essa tabela de códigos entrando em contato por email com o banco central, pois, na documentação do serviço não especifica qual código corresponde a qual moeda. Esse serviço não tem cotações somente de moedas tem cotações como grama do ouro (código 4), onça do ouro (código 5), índice bovespa (código 7) e por aí vai.
Você pode tentar entrar em contato através do email dine5.deinf@bcb.gov.br. Eles me responderam em menos de 24h.
Espero ter ajudado!
Tiago Crizanto
Evandro,
Consegui a descrição de todos os códigos do webservice. De uma olhada em Cotações.txt
Abraço!
Valeu Tiago!
Essa lista me ajudou bastante!!!
Thiago bom dia,
È possivel você disponibilizar novamente esse arquivo texto contendo a lista de cotações ?
Fala Thiago!
O arquivo está em http://tiagocrizanto.com/files/cotacoes.txt
Preciso acessar o webservice do banco central via Matlab. Há algum especialista em Matlab?
Luiz, bom dia!
Nesse ponto não posso te ajudar. Mas cheguei a achar alguma coisa que talvez possa ajudar.
http://www.mathworks.com/help/matlab/call-wsdl-web-services.html
http://www.mathworks.com/help/matlab/matlab_external/set-up-wsdl-tools.html
http://www.mathworks.com/help/matlab/ref/matlab.wsdl.setwsdltoolpath.html
Thiago, parabéns pelo post! Muito explicativo.
Estou tentando usar no Excel com a função =SERVIÇOWEB(), mas preciso passar toda a URL com os parâmetros, receber a string XML e extrair somente a cotação do dólar.
Tentei usar a função da seguinte forma:
=SERVIÇOWEB(“https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl?getUltimoValorXML&codigoSerie=10813”)
Porém não retorna nenhum valor referente a cotação do dólar na string XML.
Consegue me ajudar?
Abner tudo bem?
Não sou especialista em excel mas posso tentar ajudar. Já tentou consumir o serviço com a url https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS/ ?
abs
Bom dia!
Meu nome Felipe, sou Especialista em Excel e Access VBA, caso alguém tenha interesse conforme acima de consumir webservices do Banco Central usando Excel ou Access pode entrar em contato, desenvolve um suplemento que chamo de Ecomic_XL 100% em VBA Excel que consome o Webserivce.
lipetadeu@hotmail.com
Abraços,
Felipe
Tiago, boa tarde!
Que tipo de projeto devo criar, para utilizar o webservice da mesma forma como você fez, em um Job do SSIS.
Tentei criar um projeto do Integration Service Project, mas não me da a opção de add um serviço como referência.
Obrigado!
Olá Celso! Desculpe a demora em responder.
Para adicionar referencia ao webservice adicione o componente Script Task. Clique duas vezes neste componente e vá em “Edit Script…”.
No editor que abrir clique com o botão direito no projeto c# e vá na opção Add Service Reference.
Clique em Advanced na janela que abrir (canto inferior esquerdo da tela). Na próxima janela clique em “Add Web Reference…”
Coloque o endereço do webservice do BC e em seguida clique em Add Reference.
abraço
Como utilizar com a função importxml na planilha do google?
Olá Elizeu!
Pelo o que pesquisei seria necessário criar uma função no google apps (https://apps.google.com) para consumir o webservice e retornar os valores desejados.
Alguns modelos de planilhas de acompanhamento: https://drive.google.com/templates?type=spreadsheets&q=portfolio+tracker&sort=hottest&view=public&ddrp=1#
Veja algumas referências
http://blog.ouseful.info/2008/10/17/viewing-campaign-finance-data-in-a-google-spreadsheet-via-the-new-york-times-campaign-data-api/
http://blog.ouseful.info/2008/10/23/calling-amazon-associatesecommerce-web-services-from-a-google-spreadsheet/
Tutorial sobre a fórmula importxml: https://www.distilled.net/blog/distilled/guide-to-google-docs-importxml/
Espero ter ajudado
Tiago, muito obrigado. Veja se pode responder mais uma pergunta: é possível acessar o web service do banco central através de RESTful?
Fala Luiz,
Creio que não. Eles só disponibilizam estes webservices (bom, foi o único que consegui encontrar). Até entendo eles disponibilizarem um serviço SOAP.
O SOAP tem alguns “problemas” como ser um protocolo verboso (XML), necessidade serialização e desserialização de xml etc, mas, ele pode ser configurado sob diferentes protocolos e possui interfaces bem definidas (WSDL) que garante uma alta interoperabilidade.
abs,
Muito bom o post, parabéns!
Uma dúvida, no sinal de “?” vai a variável “Cotacao”. Na verdade não entendi este sinal.
Obrigado.
Olá Deywillan,
A interrogação recebe o valor da variável Dts.Variables[“Cotacao”].
Dentro do componente SQL Task você pode receber valores que vieram, por exemplo, de uma script task. Neste exemplo eu coloco o valor dessa variável com a cotação que peguei do webservice do Banco Central na Script Task e utilizo o valor da variável no SQL Task.
Se tiver mais alguma dúvida é só falar!
abraço!
Olá amigo, tudo bem?
sou iniciante em linux e estou tentando extrair estas cotações através do comando “curl -H “Content-Type: text/xml; charset=utf-8” -H “SOAPAction:getUltimoValorVO(10813)” https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl”
, porém o retorno é todo o conteúdo do arquivo wsdl. Oque me deixa mais em dúvida na verdade é como o parâmetro deve ser passado através do CURL, pois pelo oque vi no wsdl, o SOAPACTION está setado para soapAction=””… desde já agradeço e parabéns pela iniciativa
Olá Lucas,
Linux não é muito minha praia. Conheço muito pouco, mas fiz algumas pesquisas e me parece que você tem que usar um arquivo xml para fazer o post dos parâmetros. Acredito que os links abaixo vão ajudar:
http://dasunhegoda.com/make-soap-request-command-line-curl/596/
http://stackoverflow.com/a/12222750/1980202
http://stackoverflow.com/a/4574519/1980202
abraço!
Valeu meu amigo, tudo de bom!
Muito interessante. Eu estava usando o https://www3.bcb.gov.br/ptax_internet/consultarTodasAsMoedas.do?method=consultaTodasMoedas e em 15/set/2015 deixou de funcionar. Após muuuuita pesquisa achei outro site http://www4.bcb.gov.br/feed/taxas.ashx a partir do dia 18/Set. Preciso que venha a PTAX tanto do euro quanto do dolar, sempre com retorno XML. Há 10 dias atras deixou de funcionar este ultimo. Foi entao que encontrei este site. Fantastico. Mas me deparei com algumas questoes: as outras URLs acima eram muito rapidas. Este webservice SOAP é muito lento, pois demora 4-5 segundos cada consulta. Na url anterior vinha a ultima data + euro + dolar (compra e venda) numa pegada. Este servico SOAP vem o ultimo valor mas só somente 1 moeda de cada vez. Pra pegar as quatro series tenho que fazer uma consulta pra saber a ultima data válida e entao mais uma consulta com as 4 series + data. NEste caso, duas consultas, 11 segundos. Gente… é uma eter-ni-da-de. Alguma dica pra ficar mais rapido?
Agradeço,
Douglas.
Olá Douglas!
Estranho você ter essa lentidão toda. Acabei de fazer testes fazendo requisições ao webservice utilizando o SOAP UI e as requisições demoraram menos de 1 segundo.
Você tentou consumir o serviço utilizando o método abaixo?
getValoresSeriesXML – Recupera os valores de uma ou mais séries dentro de um determinado período.O resultado da consulta é devolvido ao cliente em formato XML.
Eu preciso das 4 cotacoes ao mesmo tempo: dolar e euro, compra e venda. Mas tenho que ter a data. Acontece que preciso sempre da ultima. Se for domingo de pascoa, a ultima data seria quinta e não sexta por ser feriado. Por isto estou fazendo 2 consultas. A primeira com getUltimoValorXML(1), aí sei a data, e a segunda $client->getValoresSeriesXML($series,$data) aí sim com a data e com as quatro moedas. Realmente testei hoje e está 1.5 segundos cada “ida”.
Parabens pelo artigo.
Muito obrigado pela atençao.
Boa Noite Tiago,
Parabéns pelo post, ajudou demais muito bem explicado, mas você chegou a consumir o WebService através do Oracle? Em todas as rotinas que estou testando não consigo validar o certificado, mesmo com o Wallet criado.
Desde já agradeço.
Olá Felipe!
Infelizmente não cheguei a consumir através do Oracle. Não entendi a parte do certificado que você não consegue validar.
Na rotina que desenvolvi, não é necessário nenhum certificado. Fiz testes usando o SOAP UI (https://www.soapui.org) e obtive os retornos normalmente.
abs,
Tiago Crizanto
Bom dia Tiago,
Quando é feita uma requisição UTL.HTTP.Request(“https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl”) é solicitado que seja instalado/configurado o certificado para consumir o mesmo com a menasgem: “Certificado Inávildo”. Quando consumido no Visual Studio, ele consome sem problemas e retorna os valores esperados.
Felipe,
Acho que sei o que pode estar dando problema, mas, no seu caso não vou saber dar a solução. Acredito que seja um problema no certificado https. Fiz um teste aqui e veja o que aconteceu quando adicionei a referência ao serviço:
Depois que cliquei em sim e habilitei o conteúdo, recebi a resposta.
Acho que você vai ter que buscar uma forma ignorar que a conexão seja feita sem https.
abs,
Tiago Crizanto
Pessoal, li tudo sobre o post, preciso disso no meu sistema, possuo um cliente que quer capturar a cotação do dolar no momento da venda, até entendi o webservice, porem agora preciso jogar dentro da linha de codigo do meu vb6, alguem por favor tem isso feito?? oq devo passar na url, faço isso com os correios ja, porem nao entendi bem sobre esse da cotacao.
Grato
Ademir Mantovani
Ademir,
No seu caso você vai precisar consumir o webservice do banco central e trabalhar o retorno conforme desejado. No post explico como fazer isso usando o SSIS, que por ser uma tecnologia mais recente, oferece mais recursos para se trabalhar com webservices. VB6 não é minha praia, mas achei alguns exemplos sobre como consumir um web service SOAP no VB6 http://stackoverflow.com/questions/122607/what-is-the-best-way-to-consume-a-web-service-from-vb6
abraço!
Crizando obrigado pelo post! Muito bom!
Como faço pra encontrar as series das moedas da américa do sul?
Olá Júnior!
Seguem alguns códigos:
Código: 3918 => Cotação de moeda (fim de período) – Euro
Código: 3919 => Cotação de moeda (fim de período) – Iene japonês
Código: 3920 => Cotação de moeda (fim de período) – Libra esterlina
Código: 3921 => Cotação de moeda (fim de período) – DES
Código: 3922 => Cotação de moeda (fim de período) – Peso argentino
Código: 3923 => Cotação de moeda (fim de período) – Peso mexicano
Código: 3924 => Cotação de moeda (fim de período) – Peso chileno
Código: 3925 => Cotação de moeda (fim de período) – Won coreano
Código: 3928 => Cotação de moeda (média de período) – Euro
Código: 3929 => Cotação de moeda (média de período) – Iene japonês
Código: 3930 => Cotação de moeda (média de período) – Libra esterlina
Código: 3931 => Cotação de moeda (média de período) – DES
Código: 3932 => Cotação de moeda (média de período) – Peso argentino
Código: 3933 => Cotação de moeda (média de período) – Peso mexicano
Código: 3934 => Cotação de moeda (média de período) – Peso chileno
Código: 3935 => Cotação de moeda (média de período) – Won coreano
Se quiser tem a listagem completa em um txt. Veja no link: https://www.tiagocrizanto.com/files/cotacoes.txt
abraço!
Parabéns pelo post. Muito obrigado, deu uma grande ajuda em um sistema que estou desenvolvendo, em que o cliente está precisando ajustar o valor do faturamento de algumas notas de exportação com a taxa do dólar do dia, e ele obviamente não queria ter que ajustar manualmente, mas que o sistema adivinhasse o valor…
Quanto a resposta em que você mostra o erro no Visual Studio, esta relacionado à alguns elementos internos do WSDL que usam o protocolo HTTP puro e não HTTPS. Como o endereço do WSDL está sob o HTTPS, existe uma referência à itens que não são considerados seguros. Basta ir apertando Sim em cada mensagem. aparecem várias mensagens pois existem vários itens dentro do WSDL que se referenciam a elementos HTTP. Quanto àquela tarja amarela no alto, basta permitir o conteúdo bloqueado. O bloqueio é pelo mesmo motivo: elementos HTTP dentro de um WSDL sob o protocolo HTTPS.
Usei ele aqui no Visual Studio normalmente sem problemas. Apenas em alguns raros casos, dá erro de acesso ao servidor do BC mas é aceitável, já que se trata de servidores com alto tráfego de rede.
Mais uma vez, muito obrigado por compartilhar essa informação.
Abraço.
Sandro, bom dia!
Obrigado pelas colocações. O procedimento é realmente esse. Quando fiz a implementação tive que executar os passos que você informou.
abs
Tiago, na linha 3 onde está comentado “//Referencia ao serviço do banco central https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl”
Que tipo de referência é esta? Como vi vários exemplos estou um pouco confuso. Este objeto “CotacoesService”, vc criou, correto? Poderia detalhar por favor este trecho. Obrigado.
Caio,
CotacoesService é o alias que coloquei para instanciar o serviço e usar os seus métodos. Na imagem onde coloco a referência para o serviço está com o nome br.gov.bcb.www3. Basta substituir por CotacoesService.
Neste trecho Dts.Variables[“Cotacao”].Value = cotacaoService.getUltimoValorVO(10813).ultimoValor.svalor; eu utilizo o método getUltimoValorVO passando o parâmetro 10813 (cotação do dólar) para pegar a cotação do dia anterior e coloco em uma variável global do SSIS para utilizar posteriormente.
abs,
Obrigado Tiago, agora entendi, só estou com um problema agora para adicionar a referência. Postei abaixo o problema em outro comentário. Obrigado.
Tiago, criei uma aplicação console para testar, porém não estou conseguindo adicionar a referência, esta mensagem é exibida:
“Metadata contains a reference that cannot be resolved: ‘https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl’.
There was no endpoint listening at https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
The remote server returned an error: (407) Proxy Authentication Required.
If the service is defined in the current solution, try building the solution and adding the service reference again.”
Já verifiquei meu Proxy, já liberei os direitos para o IIS, conforme alguns tutoriais indicavam, mas ainda não consegui adicionar a referência. Sabe o que posso fazer? Obrigado.
Você está tentando adicionar uma referência através da opção “Add Service Reference”?
Esta opção somente não é possível. Ao ir em Add Service Reference vc tem clicar em Advanced e na janela que se abrir clicar em Add Web Reference e em seguida colocar a URL do webservice.
Acabei de fazer um teste e funcionou normalmente.
Tiago, fazendo desta maneira é exibida esta mensagem: “Value cannot be null.
Parameter name: discoveryError & mexError”, e o botão “Add Reference” fica desabilitado.
Essa mensagem “Value cannot be null.
Parameter name: discoveryError & mexError” aparece no Box ao lado do espaço onde está descrito o XML do WebService.
Bom dia,
Nesse caso seria necessário verificar o código do projeto, o que foge um pouco do tema do post que é o integration services. Este problema está ocorrendo em um console application e fiz uma simulação em um projeto console application e funcionou normalmente.Pode ser se algum problema quando você coloca a referência. Pode aparecer uma mensagem de segurança do IE sobre conexão ssl (este tema foi dicutido nas respostas acima).
Vou dar uma olhada, valeu Tiago. Abraço!
[…] post mostrei como fazer um SSIS para pegar cotações do dólar do webservice do banco central. Agora […]
Parabéns, Tiago!
Seu conhecimento me ajudou imensamente!
Muito obrigado por compartilhar!
Um abraço!
Tiago, na aplicação que fiz em casa funcionou perfeitamente. Valeu!
Agora, preciso dos valores da Bovespa, porém alguns parâmetros que encontrei na internet, retornam valores que não batem com os valores corretos.
Segue abaixo:
//Código: 7 => Bovespa – índice
//Código: 8 => Bovespa – Volume
//Código: 7832 => Ibovespa – Variação percentual mensal
//Código: 7845 => Bovespa – índice mensal
Minha dúvida, esses valores que os métodos retornam, são atuais, ou tem um delay de horas ou dias. Obrigado.
Fonte: http://egas.digital/cotacoes.txt
Caio,
Esse problema foi justamente o motivou escrever este post. Esse serviço possui pouca documentação (basta olhar esse link: http://catalogo.governoeletronico.gov.br/arquivos/Documentos/WS_SGS_BCB.pdf), então quando consegui o mínimo de informação resolvi compartilhar.
Para estes índices não vou saber informar o período de delay, mas, no link que abaixo informa que a periodicidade é diária, ou seja, acredito que seja a cotação de fechamento do índice.
Quando precisei de mais informações sobre este serviço enviei um email para dine5.deinf@bcb.gov.br e por sorte (eu acho) eles responderam.
Neste link https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries você consegue mais informações informando o código da série.
Se você conseguir esta informação e puder compartilhar aqui seria muito útil para mantermos um repositório de informações sobre este webservice.
Acho que conheço essa fonte: http://tiagocrizanto.com/files/cotacoes.txt
Olá, Tiago! Parabéns pelo post, tem me ajudado bastante quando à utilização deste Webservice.
Estou com um problema ao desenvolver uma rotina para o nosso sistema, ele pede que eu envie no Header obrigatoriamente o “SOAPAction”. Porém, qualquer informação que eu envie, ele mostra um erro de “unexpected value”. Tentei todos os tipos de valores, desde string vazia até a url “https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS/getValor” (estou utilizando o método ‘getValor’).
Fiz um teste no Soap UI e notei que ele envia o SOAPAction = “”, assim como outro teste em uma extensão do chrome, o Boomerang.
Saberia me dizer exatamente o que deve ser enviado no SOAPAction?
Mais uma vez, obrigaodo!
Fala Giovanni,
Não entendi muito bem. Você está tentando acessar o getValor diretamente?
Para usar esse cara (em um projeto .net) vc precisa adicionar a referência do https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl e utilizar o getValor conforme explicado no item 5 da sessão Consumindo o serviço.
Para fazer teste no SOAP UI crie um novo projeto SOAP colocando o endereço do serviço acima que você pode consumir todos os métodos do wsdl. Veja como ficou o getValor.
abs
Boa tarde Tiago!
De que bolsa é essa lista codigos do Web Service ?
Tem como de pegar de outras bolsas ?
Como sou iniciante, pode me orientar como proceder para instalar este componente ?
Obrigado
Se quiser chamar no whats pra dar uma força 11 986269955
Jean,
No link disponibilizado no artigo (aqui e Aqui) tem a lista de todas as informações providas pelo webservice.
O webservice não é um componente onde você efetua a instalação e utiliza. São necessários conhecimentos de programação (em qualquer linguagem) para utilizar este serviço.
O próprio tutorial já é uma orientação sobre como proceder para utilizar este webservice em um projeto do SQL Server Integration Services.
abs
Para achar as séries disponíveis use:
https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries
O código a ser usado no webservice aparece na coluna Cód.
Estou tentando automatizar um procedimento manual em que preciso desses dados, seu post foi muito útil! Obrigado!
Tiago, eu preciso anexar esse feed com os índices básicos da economia (juros, poupança, inflação e câmbio) que fica no canto superior direito abaixo do menu (cabeçalho), na página inicial do BCB. Quando copio e colo o código html de cada um deles, retorna página em branco. Pode me ajudar?
Não entendi sua pergunta. Neste post eu trato sobre como pegar as informações de um webservice que o banco central disponibiliza e armazena-los em um banco de dados.
tiagocrizanto
Antes quero lhe parabenizar pela matéria.
você sabe o código pra cambio pra Franco CFA o dinheiro utilizado na áfrica Ocidental? a sigla da moeda é XOF
Olá Midana,
Acredito não ter cotação para esta moeda.
Neste txt disponibilizei todas a consultas disponíveis http://tiagocrizanto.com/files/cotacoes.txt
Há também um site do banco central onde você pode fazer estas consultas: https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries
Olá, Tiago. Tudo bem?
Obrigada por compartilhar o conhecimento. Preciso implementar uma solução rápida aqui na empresa e o seu post possui o que preciso.
Obrigada.
Olá Tiago.
Não importa se com um código em Excel ou usando o SoapUI, sempre recebo Internal Server Error, e nos detalhes:
Wed May 03 11:35:25 BRT 2017:DEBUG:<< "soapenv:Server.userExceptionjava.lang.NumberFormatException: For input string: "?"”
Já experimentei alterar os parâmetros, principalmente as aspas dos tipos data. Parece que a interface não está recebendo corretamente os parâmetros.
Renato,
Não entendi o seu problema. Você está com erro ao consumir o webservice e ao chamar algum método você recebe esse erro?
Olá Tiago,
Gostei muito da tua materia, porém tentei replicar da mesma forma, mas ocorria erro e não consegui identificar o problema, então antes de utilizar o “Execute SQL Task”, gravei toda a query em uma variavel usando o “Expression Task” e executei a varial na “Execute SQL Task”, e funcionou.
Tem ideia do por que não consigo utilizar o “Execute SQL Task” conforme teu exemplo ? Tem alguma parametrização que tem que ser feita antes de rodar ?
Olá Ricardo!
Sem ver o projeto e o erro que está ocorrendo fica um pouco complicado de saber o que pode estar ocorrendo, mas aqui vão algumas sugestões:
– Crie somente um SQL Task e tente executar um query qualquer sem parametro (select top 10 * from tabela, por exemplo). Dessa forma você consegue validar se a conexão com o banco está ok.
– Você declarou e setou o valor na variável cotação? O erro pode estar ocorrendo porque este valor está em nulo. Dá uma olhada no passo 5 sobre como criar essa variável.
Amigo estou querendo fazer uma aplicação em android para fazer conversão de moedas e preciso desse web service você teria alguma ideia de como implementar a busca nele via android ? com json etc?
Fernando,
É possível consumir em WS em uma aplicação Android sim.
No item 5 eu mostro como utilizo o webservice e pego o valor da cotação com o código abaixo:
var cotacaoService = new CotacoesService.FachadaWSSGSService();
Dts.Variables[“Cotacao”].Value = cotacaoService.getUltimoValorVO(10813).ultimoValor.svalor;
Dts.TaskResult = (int)ScriptResults.Success;
Seguem algumas referências
http://seesharpgears.blogspot.com.br/2010/10/ksoap-android-web-service-tutorial-with.html
http://www.c-sharpcorner.com/UploadFile/88b6e5/how-to-call-web-service-in-android-using-soap/
Prezado tiago.
Durante anos suas dicas me forma muito uteis. Usava um script em bash para baixara . acotacao do dolar no local do cursor usando o URL http://www4.bcb.gov.br/Download/fechamento/aammdd.csv.
Infelizmente o BCB mudou. Vc saberia me dizer qual URL que eu posso usar para extrair do arquivo csv as mesmas informações de cotações de moedas?
Obrigado!
Abraços!
Walter Rodrigues
Walter,
Acho que eles mudaram o formato. Baixei a cotação de ontem(09/03/2018). Observe que agora o formato não está no aammdd e sim aaaammdd. Segue a URL
http://www4.bcb.gov.br/Download/fechamento/20180309.csv
Boa noite, Tiago!
Parabéns pela dedicação em responder a todas as respostas.
Tenho um problema e se pudesse me ajudar, é o seguinte:
Tenho um script em php e o código não funciona mais tiraram ele.
Eu preciso pegar a cotação do valor do grama do ouro.
Segue o código que foi descontinuado:
Preciso desse condigo do grama do ouro que é o 4 certo?
Como faria para obter o valor, você poderia me dar uma ajuda?
Obrigado
Que Deus continue te abençoando sempre com sua família!
Olá Nilson,
O código da grama do ouro é esse mesmo (Código: 4 => Ouro BMF – grama).
Só não entendi qual o problema que você tem para recuperar este código. A única coisa a ser feita é consumir o wsdl informando o código 4.
Neste link há várias sugestões de como consumir um wsdl em php https://stackoverflow.com/questions/4430/how-to-easily-consume-a-web-service-from-php
Outra forma de consumir esse wsdl e ver os resultados é utilizando o SOAP UI https://www.soapui.org
Código para o Peso Argentino: 14001
Obrigado! Me ajudou bastante!
Olá, boa noite. Parabéns pelo blog! Está ótimo!
Gostaria de saber se você ou tem exemplo de como consultar via browser.
ex: https://www3.bcb.gov.br/sgspub/JSP/sgsgeral/FachadaWSSGS.wsdl/getUltimoValorVO?codigoSerie=10813
Alexandro, blz?
Tem como consultar sim. Acessa a url https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries e digita o código da série na “busca por código”.
Boa tarde,
Antes de sair a PTAX Oficial as 13:10 é feita quatro prévias, primeira prévia das 10:00 as 10:10, a segunda das 11:00 as 11:10, a terceira das 12:00 as 12:10 e quarta das 13:00 as 13:10, a PTAX oficial é uma média simples dessas 4 prévias, minha pergunta, é possível obter o valor dessas prévias da PTAX ?
Obrigado,
Allan
Fala Alan,
Cara vou ficar te devendo essa. Não sei como pegar estas prévias.
abraço
[…] ao serviço do Banco Central. Não vou entrar em detalhes do funcionamento deste web service. Neste post eu entro em mais detalhes sobre o funcionamento deste […]
Muito obrigado, me ajudou muito!
Olá tudo bem? quero saber se tem como fazer consultas com esse ws. e como eu poderia fazer isso?
Jonatan,
Neste post mostro como fazer uma aplicação que consome dados deste webservice.
http://tiagocrizanto.com/obtendo-cotacao-do-dolar-atraves-de-uma-aplicacao-asp-net-com-hangfire
abs