1
resposta

[Projeto] Solução

Google Books

public class main {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner input = new Scanner(System.in);
        var search = input.nextLine();
        String query = URLEncoder.encode(search, StandardCharsets.UTF_8);
        String edress = "https://www.googleapis.com/books/v1/volumes?q=" +query+ "&key=AIzaSyDxv7ZaossM1e6I2rRqPct4jwJS5scopQo";

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

        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

Coin Gecko

public class main2 {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner input = new Scanner(System.in);
        System.out.println("Digite ó nome de uma criptomoeda que deseja ver a cotação atual: ");
        var search = input.nextLine();

        String address = "https://api.coingecko.com/api/v3/simple/price?vs_currencies=usd&ids="+search+"&x_cg_demo_api_key=CG-22R3nQHK2Qv7fEKmcnw6rcDt";
        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(response.body());
    }
}

ThemeaLDB

public class main3 {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner input = new Scanner(System.in);
        System.out.println("Digite o nome de um prato: ");
        var search = input.nextLine();
        String address = "www.themealdb.com/api/json/v1/1/search.php?s=" +search;
        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(response.body());
    }
}
1 resposta

Oi, Leonardo! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei bastante de como você estruturou três exemplos diferentes consumindo APIs, isso mostra que você realmente entendeu o fluxo de HttpClient, HttpRequest e HttpResponse. Também chamou atenção o uso de URLEncoder, que é um cuidado importante quando lidamos com parâmetros de busca. Só vale um ajuste no terceiro exemplo: faltou o https:// na URL, o que pode causar erro na requisição.

Uma dica interessante para o futuro é tratar possíveis erros da requisição usando try-catch, assim seu programa fica mais robusto. Veja este exemplo:


try {
    HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.body());
} catch (Exception e) {
    System.out.println("erro na requisicao");
}

Nesse código, o try-catch evita que o programa quebre caso aconteça algum erro na chamada da API, exibindo uma mensagem simples no lugar.

Alura

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