Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Lo que aprendimos en aula

Se realizo:

  • Loop con while
  • Lista de títulos
  • Consumo de la OMDb API
  • Manejo de excepciones
  • Escritura en titulos.json
  • Pretty Printing con Gson

PrincipalConBusqueda.java

package com.alura.screenmatch.principal;

import com.alura.screenmatch.modelos.Titulo;
import com.alura.screenmatch.modelos.TituloOmdb;
import com.alura.screenmatch.excepcion.ErrorEnConversionDeDuracionException;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.FileWriter;
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.ArrayList;
import java.util.List;
import java.util.Scanner;

public class PrincipalConBusqueda {
    public static void main(String[] args) throws IOException, InterruptedException {

        Scanner lectura = new Scanner(System.in);
        List<Titulo> titulos = new ArrayList<>();

        Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
                .setPrettyPrinting()
                .create();

        while (true) {
            System.out.println("Escriba el nombre de una película: ");
            var busqueda = lectura.nextLine();

            if (busqueda.equalsIgnoreCase("salir")) {
                break;
            }

            String direccion = "https://www.omdbapi.com/?t="
                    + busqueda.replace(" ", "+")
                    + "&apikey=ffedabb6";

            try {
                HttpClient client = HttpClient.newHttpClient();
                HttpRequest request = HttpRequest.newBuilder()
                        .uri(URI.create(direccion))
                        .build();

                HttpResponse<String> response = client
                        .send(request, HttpResponse.BodyHandlers.ofString());

                String json = response.body();
                System.out.println(json);

                TituloOmdb miTituloOmdb =
                        gson.fromJson(json, TituloOmdb.class);

                Titulo miTitulo = new Titulo(miTituloOmdb);
                System.out.println("Título ya convertido: " + miTitulo);

                titulos.add(miTitulo);

            } catch (NumberFormatException e) {
                System.out.println("Ocurrió un error: ");
                System.out.println(e.getMessage());
            } catch (IllegalArgumentException e) {
                System.out.println("Error en la URI, verifique la dirección.");
            } catch (ErrorEnConversionDeDuracionException e) {
                System.out.println(e.getMessage());
            }
        }

        FileWriter escritura = new FileWriter("titulos.json");
        escritura.write(gson.toJson(titulos));
        escritura.close();

        System.out.println("Finalizó la ejecución del programa!");
    }
}
1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que has hecho un gran trabajo siguiendo los pasos de la actividad. Has implementado correctamente el consumo de la API de OMDb, el manejo de excepciones y la escritura en un archivo JSON con pretty printing usando Gson.

Aquí hay algunos puntos clave que puedes verificar para asegurarte de que todo esté funcionando correctamente:

  1. API Key: Asegúrate de que la clave de API (apikey) que estás utilizando en la URL de la API de OMDb sea válida. Sin una clave válida, no podrás obtener datos de la API.

  2. Manejo de Excepciones: Veo que ya has incluido un manejo de excepciones para NumberFormatException, IllegalArgumentException y ErrorEnConversionDeDuracionException. Esto es excelente para capturar errores comunes que pueden ocurrir durante la ejecución del programa.

  3. Escritura del Archivo JSON: Has utilizado FileWriter para escribir los datos en titulos.json. Asegúrate de que tienes permisos de escritura en el directorio donde intentas guardar el archivo.

  4. Pruebas: Prueba tu programa con diferentes títulos de películas para asegurarte de que maneja correctamente tanto las búsquedas exitosas como las fallidas (por ejemplo, títulos que no existen en la base de datos de OMDb).

  5. Formato del JSON: Has configurado Gson para usar setPrettyPrinting(), lo cual es excelente para asegurarte de que el archivo JSON sea legible.

Si todo esto está en orden, deberías tener un programa funcional que busca películas, maneja errores y guarda los resultados en un archivo JSON. ¡Buen trabajo!

Espero haber ayudado y buenos estudios!