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

Erro na exibição dos dadosTemporada

package br.com.paulo.alura.screenmatch.screenmatch.principal;

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

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Principal {

    private ConsumoApi consumo = new ConsumoApi();
    private ConverteDados conversor = new ConverteDados();

    private Scanner leitura = new Scanner(System.in);

    private final String ENDERECO = "http://www.omdbapi.com/?t=";
    private final String API_KEY = "&apikey=15c1824c";

    public void exibirMenu(){
        System.out.println("digite o nome da serie para pesquisar:");
        var nomeSerie = leitura.nextLine();
        var json = consumo.obterDados(ENDERECO + nomeSerie.replace(" ", "+") + 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 + nomeSerie.replace("", "+") +"&season=" + i + API_KEY);
            DadosTemporada dadosTemporada = conversor.obterDados(json, DadosTemporada.class);

            temporadas.add(dadosTemporada);

        }

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Paulo! Tudo bem?

O erro "Illegal character in query" indica que há caracteres inválidos na URL. Isso geralmente acontece quando o espaço não é corretamente substituído por + ou %20.

No seu código, ao construir a URL para buscar as temporadas, você está usando nomeSerie.replace("", "+"). Isso não está substituindo os espaços corretamente, pois o método replace deve ter o primeiro argumento como o caractere a ser substituído (neste caso, um espaço " ").

Aqui está como você pode corrigir isso:

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

Certifique-se de que o replace(" ", "+") está substituindo os espaços corretamente por +.

Espero ter ajudado e bons estudos!

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