1
resposta

Duvidas

O código abaixo não consegue printar e nem gravar arquivos json e nem txt qual sera a causa pelo que revisei esta tudo correto package br.com.alura.screenmatch.principal;

import br.com.alura.screenmatch.excecao.ErroDEConvesaoDeAnoExeception; import br.com.alura.screenmatch.modelos.Titulo; import br.com.alura.screenmatch.modelos.tituloOnbb; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder;

import java.io.FileWriter; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.io.IOException; import java.net.URI; import java.net.http.HttpRequest; import java.net.http.HttpClient; import java.net.http.HttpResponse;

public class principalComBusca { public static void main(String[] args) throws IOException, InterruptedException { Scanner leitura = new Scanner(System.in); String busca = ""; List titulos = new ArrayList<>(); Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE) .setPrettyPrinting() .create();

    while (!busca.equalsIgnoreCase("sair")) {

        System.out.println("Digite um filme para busca: ");
        busca = leitura.nextLine();

        if (busca.equalsIgnoreCase("sair")) {
            break;
        }

        String endereco = "https://www.omdbapi.com/?t=" + busca.replace(" ", "+") + "&apikey=2ac7a45b";
        System.out.println(endereco);
        try {
            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(json);

            tituloOnbb meuTituloOmdb = gson.fromJson(json, tituloOnbb.class);
            System.out.println(meuTituloOmdb);
            //  try {
            Titulo meuTitulo = new Titulo(meuTituloOmdb);
            System.out.println("Titulo já convertido");
            System.out.println(meuTitulo);

            titulos.add(meuTitulo);
        } catch (NumberFormatException e) {
            System.out.println("Aconteceu um erro: ");
            System.out.println(e.getMessage());
        } catch (IllegalArgumentException e) {
            System.out.println("Algum erro de argumento na busca, verifique o endereço");
        } catch (ErroDEConvesaoDeAnoExeception e) {
            System.out.println(e.getMessage());
        }

    }
    System.out.println(titulos);

    FileWriter escrita = new FileWriter("filmes.json");
    escrita.write(gson.toJson(titulos));
    escrita.close();
    System.out.println("O programa finalizou corretamente!");

}

}

1 resposta

Bom dia!

Duas causas que podem ser o motivo: 01 - sua pesquisa não está retornando dados da chamada da API, por isso, retorna vazio; 02 - Você está fazendo mais de uma pesquisa e sua implementação não prevê a continuidade de escrita. Toda vez você está gerando um arquivo do zero. Ajuste a linha:

FileWriter escrita = new FileWriter("filmes.json", true);

Sugiro fazer uma depuração para ver se a API está retornando dados.