1
resposta

[Sugestão] Tratamento de Erros para Formatação de Busca

Ao tentar o filme "Top Gun" percebi que voltou um erro, devido ao espaçamento da String, busquei algumas soluções.

De início tratei da seguinte forma:

String busca = sc.nextLine().trim().toLowerCase().replace(" ", "+");

Mas fazendo algumas pesquisas descobri que existe uma classe dentro de java.net que é a URLEncoder, com o método encode. No final meu código ficou assim:

package br.com.alura.screenmatch.principal;
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 PrincipalComBusca {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner sc = new Scanner(System.in);
        System.out.println("Digite o nome do filme:");
        String search = sc.nextLine();
        String encodedSearch = URLEncoder.encode(search, StandardCharsets.UTF_8.toString());
        String dns = "https://www.omdbapi.com/?t="+encodedSearch+"&apikey=175bf8e6";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(dns))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

Utilizei o inglês para treinar, por mais que não fique coerente com o nome da classe

1 resposta

Olá, Raphael. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Gostei bastante da sua iniciativa em pesquisar alternativas e aplicar o URLEncoder.encode, isso ajuda bastante a evitar erros com espaços e caracteres especiais nas URLs. É uma solução mais robusta do que o simples replace, e mostra que você está se aprofundando nos recursos da linguagem.

Uma dica interessante para o futuro é usar o método contains para verificar rapidamente se a resposta da API retornou algo válido. Veja este exemplo:

 if (response.body().contains("Movie not found")) { System.out.println("Filme não encontrado. Tente outro nome."); } 

Esse código confere se a resposta traz uma mensagem de erro, e mostra uma saída amigável para o usuário.

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