1
resposta

[Projeto] [Código] Tópico 1 - Requisição e Resposta

package br.com.alura.screenmatch.principal;

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 PrincipalComBusca {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Insira um filme para busca: ");
        String busca = leitura.nextLine().trim().replaceAll("\\s", "+");


        String endereco = "https://www.omdbapi.com/?t=" + busca + "&y=2018&apikey=3877424c";

        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());


    }
}
1 resposta

Olá, Isabelle. Como vai?

Parabéns por concluir essa etapa fundamental do curso! O seu código está muito bem estruturado e você aplicou corretamente as novas classes do Java 11+ para lidar com requisições HTTP (HttpClient, HttpRequest e HttpResponse).

Um ponto muito positivo foi o uso do método replaceAll("\\s", "+"). Isso é essencial para que a busca funcione corretamente na API do OMDb, já que as URLs não podem conter espaços em branco. Ao substituir o espaço pelo sinal de "+", você garante que o parâmetro de busca seja interpretado corretamente pelo servidor.

Para complementar seu aprendizado, deixo algumas sugestões técnicas:

  • Gerenciamento de Recursos: É uma boa prática fechar o objeto Scanner ao final do programa usando leitura.close(); para evitar vazamento de memória.
  • Flexibilidade na busca: No seu endereco, o ano está fixo como 2018. Caso queira buscar qualquer filme, você pode remover o parâmetro &y=2018 ou transformá-lo em uma nova variável de entrada para o usuário.
  • Segurança da Chave: Em projetos reais, evite deixar a apikey exposta diretamente no código (Hardcoded). O ideal é usar variáveis de ambiente ou arquivos de configuração para protegê-la.

Veja como o trecho do endereço poderia ficar mais flexível:

// Removendo o ano fixo para permitir buscas mais abrangentes
String endereco = "https://www.omdbapi.com/?t=" + busca + "&apikey=3877424c";

Além disso, como o próximo passo do curso envolve lidar com o formato JSON, prepare-se para utilizar bibliotecas como o Gson ou Jackson para transformar esse texto que aparece no seu response.body() em um objeto Java de verdade!

Espero que possa ter lhe ajudado!