Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Minha Solução] Desafio consulta à API CoinGecko

Desafio2. Crie um programa Java que utiliza as classes HttpClient, HttpRequest e HttpResponse para fazer uma consulta à API CoinGecko e exiba a cotação atual de uma criptomoeda escolhida pelo usuário.


import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;

import static java.lang.System.exit;

public class ValorCriptoMoeda {
    private String criptoNome;

    Scanner sc = new Scanner(System.in);

    public ValorCriptoMoeda(String criptoNome){
        this.criptoNome = criptoNome;
    }

    @Override
    public String toString() {
        return super.toString();
    }
    //entrada de dados
    public void entrarInformacao() throws IOException, InterruptedException {
        int opcao = 1;
        System.out.println("===== WELCOME TO - ULTIMATE COIN SEARCH =====");
        do {
            System.out.println( """
                    Selecione a opçção abaixo:
                    1 - Cotação de Moedas em Dólar(USD)
                    2 - Cotação de Moedas em Real(BRL)
                    3 - SAIR
                    """);
            int selecao = sc.nextInt();
            switch (selecao) {
                case 1:
                    System.out.println("===== COTAÇÃO EM DÓLAR(USD) =====");
                    System.out.println("Insira o nome da criptomoeda: ");
                    this.setCriptoNome(sc.next());
                    coletarEmDolar();
                    break;
                case 2:
                    System.out.println("===== COTAÇÃO EM REAL(BRL) =====");
                    System.out.println("Insira o nome da criptomoeda: ");
                    this.setCriptoNome(sc.next());
                    coletarEmReal();
                    break;
                case 3:
                    System.out.println("Saindo do programa...");
                    exit(0);
                    break;
            }
        } while (opcao == 1);
    }
    //Coleta o valor em dolar
    public void coletarEmDolar() throws IOException, InterruptedException {
        String address ="https://api.coingecko.com/api/v3/simple/price?ids=" +
                this.getCriptoNome().replace(" ", "+") + "&vs_currencies=usd";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(address))
                .build();
        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println("===== SAÍDA DE DADOS =====");
        System.out.println(response.body() + "\n");
    }
    //coleta o valor em Real
    public void coletarEmReal() throws IOException, InterruptedException {
        String address ="https://api.coingecko.com/api/v3/simple/price?ids=" + 
                this.getCriptoNome().replace(" ", "+") + "&vs_currencies=brl";
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(address))
                .build();
        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println("\n===== SAÍDA DE DADOS =====");
        System.out.println(response.body() + "\n");
    }
    //Getters e Setters
    public String getCriptoNome() {
        return criptoNome;
    }

    public void setCriptoNome(String criptoNome) {
        this.criptoNome = criptoNome;
    }
}

import java.io.IOException;

public class Principal {
    public static void main(String[] args) throws IOException, InterruptedException {
        ValorCriptoMoeda valorCriptoMoeda = new ValorCriptoMoeda("");
        valorCriptoMoeda.entrarInformacao();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Carlos, como vai?

Obrigado por compartilhar seu código com a comunidade Alura. É ótimo ver sua implementação do desafio utilizando as classes HttpClient, HttpRequest e HttpResponse para consultar a API CoinGecko! A maneira como você organizou a entrada de dados e a estrutura do programa está bem clara, o que facilita a compreensão do fluxo do aplicativo.

Conte com o apoio do Fórum na sua jornada.

Abraços e bons estudos!