1
resposta

[Sugestão] Desafio

1 consulta

package praticando_api.consulta1;

import java.io.IOException;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o titulo de um livro");
        var busca = leitura.nextLine();

        String chave = "AIzaSyBZ1Y6uVH8KejXHLwHg2EqboigErRymfuI";

        // Faz o encode para evitar problemas com espaços/acentos
        String buscaCodificada = URLEncoder.encode(busca, StandardCharsets.UTF_8);
        String endereco = "https://www.googleapis.com/books/v1/volumes?q=" + buscaCodificada + "&key=" + chave;


        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(endereco))
                .build();

        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
        leitura.close();
    }
}

2 consulta

package praticando_api.consulta2;

import java.io.IOException;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.Locale;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner scanner = new Scanner(System.in);
        // Pergunta a criptomoeda
        System.out.println("Digite o nome da criptomoeda (ex: bitcoin, ethereum, dogecoin): ");
        String crypto = scanner.nextLine().toLowerCase();
        String cryptoCodificada = URLEncoder.encode(crypto, StandardCharsets.UTF_8);

        // Pergunta a moeda fiduciária
        System.out.println("Digite a moeda para conversão (ex: usd, brl, eur): ");
        String fiduciaria = scanner.nextLine().toLowerCase();
        String buscaCodificada = URLEncoder.encode(fiduciaria, StandardCharsets.UTF_8);

        String endereco = "https://api.coingecko.com/api/v3/simple/price?ids=" + cryptoCodificada + "&vs_currencies=" + buscaCodificada;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(endereco))
                .build();

        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
        scanner.close();
    }
}

3 consulta

package praticando_api.consulta3;

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;

public class Main {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Insira o nome da receita: ");
        String receita = scanner.nextLine().toLowerCase();

        String endereco = "https://www.themealdb.com/api/json/v1/1/search.php?s=" + receita;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(endereco))
                .build();

        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
        scanner.close();
    }
}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi, João! Como vai?

Com base no que você explicou, curti o uso de URLEncoder e HttpClient, a organização em pacotes e o fechamento dos Scanner. Atenção à sua chave do Google Books: evite expor em repositórios; use variáveis de ambiente com System.getenv("GOOGLE_API_KEY"). Valide entradas (ex.: nome da cripto) e verifique o status da resposta antes de imprimir. Se puder, faça o parse do JSON (ex.: Gson) para extrair só o que importa.

Uma dica interessante para o futuro é verificar statusCode() e tratar o JSON. Veja este exemplo:


// Exemplo simples: requisicao + validacao + parse com Gson
// (sem acentos nos comentarios)
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;

public class Exemplo {
    public static void main(String[] args) throws Exception {
        var req = HttpRequest.newBuilder()
            .uri(URI.create("https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=brl"))
            .GET()
            .build();
        var client = HttpClient.newHttpClient();
        var res = client.send(req, HttpResponse.BodyHandlers.ofString());

        if (res.statusCode() == 200) {
            JsonObject obj = JsonParser.parseString(res.body()).getAsJsonObject();
            double preco = obj.getAsJsonObject("bitcoin").get("brl").getAsDouble();
            System.out.println("Preco BRL: " + preco); // imprime apenas o valor
        } else {
            System.out.println("Erro HTTP: " + res.statusCode());
        }
    }
}

O que o código faz: baixa o preço do Bitcoin em BRL, confere o status 200 e imprime só o valor. Para a Books API, carregue a chave com System.getenv("GOOGLE_API_KEY") e concatene no URI.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!