2
respostas

[Sugestão] Solução para erro de null nessa parte do curso usando "String nomeFormatado = URLEncoder.encode(nomeSerie, StandardCharsets.UTF_8);"

package br.com.alura.screenmatch.Principal;

import br.com.alura.screenmatch.model.DadosSerie;
import br.com.alura.screenmatch.model.DadosTemporada;
import br.com.alura.screenmatch.service.ConsumoApi;
import br.com.alura.screenmatch.service.ConverteDados;

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Principal {


    private Scanner leitura = new Scanner(System.in);
    private ConsumoApi consumo = new ConsumoApi();
    private ConverteDados conversor = new ConverteDados();

    private final String ENDERECO = "https://omdbapi.com/?t=";
    private final String API_KEY = "&apikey=6585022c";

    public void exibeMenu(){
        System.out.println("Digite o nome da série para busca: ");
        var nomeSerie = leitura.nextLine();
        String nomeFormatado = URLEncoder.encode(nomeSerie, StandardCharsets.UTF_8);

        var json = consumo.obterDados(ENDERECO + nomeFormatado + API_KEY);
        DadosSerie dados = conversor.obterDados(json, DadosSerie.class);
        System.out.println(dados);

        List<DadosTemporada> temporadas = new ArrayList<>();

        for(int i = 1; i <= dados.totalTemporadas(); i++) {
            json = consumo.obterDados(ENDERECO + nomeFormatado + "&season=" + i + API_KEY);
            DadosTemporada dadosTemporada = conversor.obterDados(json, DadosTemporada.class);
            temporadas.add(dadosTemporada);
        }

        temporadas.forEach(System.out::println);
    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
2 respostas

Oi, Eduardo! Como vai?

Agradeço por compartilhar.

Com base no que você explicou, o erro de null pode acontecer quando o retorno da API não traz os dados esperados, por exemplo, se o nome da série estiver digitado de forma diferente ou se o JSON vier vazio. Sua implementação está bem estruturada, e o uso do URLEncoder é uma boa prática para evitar problemas com espaços e caracteres especiais.

Continue explorando o projeto!

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

a ideia foi usar o String nomeFormatado = URLEncoder.encode(nomeSerie, StandardCharsets.UTF_8);

assim quando ele concatenar, nessa parte:
json = consumo.obterDados(ENDERECO + nomeFormatado + "&season=" + i + API_KEY);

vai evitar que a resposta fique "g+a+m+e o+f t+h+r+o+n+e+s".
meu código mesmo idêntico ao video estava lendo dessa forma e retornando null por conta disso.