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

[Sugestão] erro no exercicíio google books

Meu exercício número 1 não rodou corretamente deu erro mesmo o google books não necessitar de chave key . Depois de pesquisar cheguei na seguinte conclusão rodou aqui mais não sei se seria o certo alguém pode analisar. 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 ConsultaGoogleBooks { public static void main(String[] args) throws IOException, InterruptedException { Scanner scanner = new Scanner(System.in); System.out.print("Digite o título do livro: "); String titulo = scanner.nextLine();

    String endereco = "https://www.googleapis.com/books/v1/volumes?q=intitle:" +
            URLEncoder.encode(titulo, StandardCharsets.UTF_8);


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

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

    String json = response.body();
    System.out.println("Resposta da API:");
    System.out.println(json);
}

}

1 resposta
solução!

Olá, Monyse! Tudo bem?

A API do Google Books não requer uma chave de API para consultas básicas, então você está no caminho certo ao configurar a URL da requisição sem uma chave. No entanto, aqui estão algumas dicas para garantir que o código funcione corretamente:

  1. Verifique a URL: Certifique-se de que a URL está correta e que o título do livro está sendo codificado corretamente. O uso de URLEncoder.encode(titulo, StandardCharsets.UTF_8) está correto para garantir que caracteres especiais no título sejam tratados adequadamente.

  2. Tratamento de Erros: Embora não seja necessário para o funcionamento básico, é uma boa prática adicionar um tratamento de erros para lidar com possíveis exceções que podem ocorrer durante a execução, como problemas de conexão. Você pode usar um bloco try-catch para capturar exceções como IOException e InterruptedException.

  3. Verifique a Resposta: Após a requisição, é importante verificar o código de status da resposta para garantir que a chamada foi bem-sucedida. Você pode fazer isso com response.statusCode(). Um código 200 indica sucesso.

Aqui está uma versão ligeiramente modificada do seu código com tratamento de erros:

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 ConsultaGoogleBooks {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Digite o título do livro: ");
        String titulo = scanner.nextLine();

        try {
            String endereco = "https://www.googleapis.com/books/v1/volumes?q=intitle:" +
                    URLEncoder.encode(titulo, StandardCharsets.UTF_8);

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

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

            if (response.statusCode() == 200) {
                String json = response.body();
                System.out.println("Resposta da API:");
                System.out.println(json);
            } else {
                System.out.println("Erro na requisição: " + response.statusCode());
            }
        } catch (IOException | InterruptedException e) {
            System.out.println("Ocorreu um erro: " + e.getMessage());
        }
    }
}

Espero que isso ajude a resolver o problema! Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.