public static async Task <DadosAPI> GetDados() { //Como o json que se pega possui arrays, é necessario criar uma classe //para que se possa pegar os dados corretamente DadosAPI dados = new DadosAPI(); //Pega a data do dia anterior para poder ser passada no caminho da API string data = GetData(); //As próximas duas linhas são responsáveis por acessar e pegar os dados na API client.BaseAddress = new Uri("https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/"); HttpResponseMessage resposta = await client.GetAsync($"CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao=%27{data}%27&$top=100&$format=json&$select=cotacaoCompra,cotacaoVenda"); //Armazena a resposta da API em uma string string texto_do_json = await resposta.Content.ReadAsStringAsync(); //Converte os dados do Json para poder facilitar o manuseamentos dos dados dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(texto_do_json); //Acessa os dados em de cada posição do json //OBS: Caso existissem mais que dois dados, bastaria fazer um //foreach percorrendo o json e armazenando os dados em um Array ou List dados.valorCompra = obj.value[0].cotacaoCompra; dados.valorVenda = obj.value[0].cotacaoVenda; //Retornar os dados do tipo da minha classe "DadosAPI" return(dados); }
public static async void ChamadaAsync() { ///<summary> /// /// * Atenção * é muito importante que se utilize os métodos /// GetAwaiter() Pois ele espera que a API seja executada para /// somente depois executar o resto do programa e do método /// GetResult() pois ele retorna o resultado pego na consulta /// à API /// /// </summary> dadosGerais = PegaDadosAPI.GetDados().GetAwaiter().GetResult(); }