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

Haga lo que hicimos en aula

código completo y comentado, siguiendo los pasos que indicaste:

Java

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

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 titulos = new ArrayList<>(); // Lista para almacenar los títulos

    // Configuración de Gson para formato legible (pretty printing)
    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; // Salir del bucle si el usuario escribe "salir"
        }

        String direccion = "https://www.omdbapi.com/?t=" +
                busqueda.replace(" ", "+") +
                "&apikey=coloque_su_apikey"; // Reemplaza con tu API key

        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);
            System.out.println(miTituloOmdb);

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

            titulos.add(miTitulo); // Agregar el título a la lista

        } catch (NumberFormatException e) {
            System.out.println("Ocurrió un error al convertir un número: ");
            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());
        }
    } // Fin del bucle while

    // Escribir la lista de títulos en un archivo JSON
    FileWriter escritura = new FileWriter("titulos.json");
    escritura.write(gson.toJson(titulos));
    escritura.close();

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

}

    
    Resumen de lo que hace el código:

Importa las clases necesarias: Importa las clases necesarias para el manejo de excepciones, modelos de datos, Gson, entrada/salida y comunicación HTTP.
Crea una lista de títulos y configura Gson: Crea una lista vacía para almacenar los títulos de las películas y configura Gson para usar mayúsculas en los nombres de campo y formato legible.
Inicia un bucle infinito: Inicia un bucle while(true) que se repetirá hasta que el usuario escriba "salir".
Pide al usuario el nombre de una película: Dentro del bucle, solicita al usuario que ingrese el nombre de una película.
.
¡Listo! Ahora tienes un programa que te permite buscar películas en la API de OMDb, almacenar los resultados en una lista y guardar esa lista en un archivo JSON 
1 respuesta

Hola Frank, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!