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

Lo visto en clases

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

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

    Scanner leer = 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("Esciba el nombre de la pelicula");
        String buscar = leer.nextLine();

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

        String direccion = "https://www.omdbapi.com//?t="+
                buscar.replace(" ", "+")+
                "&apikey=5e829715";
        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);

            TituloOmbd miTituloOmdb = gson.fromJson(json,TituloOmbd.class);
            System.out.println(miTituloOmdb);

            Titulo miTitulo = new Titulo(miTituloOmdb);
            System.out.println(miTitulo);



            titulos.add(miTitulo);
        } catch (NumberFormatException e) {
            System.out.println("Ocurrio un error: " +e.getMessage());
        } catch (IllegalArgumentException e){
            System.out.println("Error en la URI verifique la direccion");
        } catch (Exception e) {
            System.out.println("Errors inesperado: " +e.getMessage());
        }
    }

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

    escritura.close();
    System.out.println(titulos);
    System.out.println("Finalizo la ejecucion del Programa");
}

}

1 respuesta

¡Hola Liliana, espero que estés bien!

Parece que estás avanzando muy bien con tu proyecto para consumir una API, manejar errores y escribir archivos en Java. Tu código está bastante completo, pero aquí hay algunas sugerencias para asegurarnos de que todo funcione sin problemas:

  1. Importaciones Faltantes: Asegúrate de importar todas las clases necesarias. Por ejemplo, ArrayList, IOException, HttpClient, HttpRequest, HttpResponse, URI, y cualquier otra clase que estés utilizando pero que no esté importada.

  2. Manejo de Excepciones: Estás manejando bien las excepciones, pero podrías considerar agregar un mensaje más detallado o una acción específica para cada tipo de excepción para que sea más claro qué está fallando.

  3. API Key: Veo que estás usando una API key (apikey=5e829715). Asegúrate de que esta clave sea válida y que no esté expuesta si estás compartiendo tu código públicamente.

  4. Formato del Archivo JSON: Estás usando setPrettyPrinting() en GsonBuilder, lo cual es excelente para asegurarte de que el archivo JSON sea legible. Asegúrate de que el archivo titulo.json se esté generando en el directorio correcto y verifica los permisos de escritura en el sistema de archivos.

  5. Clases Titulo y TituloOmbd: Asegúrate de que estas clases estén correctamente definidas y que sus constructores y métodos sean adecuados para manejar los datos que estás recibiendo de la API.

  6. Pruebas: Considera realizar pruebas con diferentes nombres de películas, incluyendo algunos que no existan, para ver cómo maneja tu programa esos casos.

Aquí tienes un pequeño ejemplo de cómo podrías estructurar tu clase Titulo si aún no lo has hecho:

public class Titulo {
    private String title;
    private String year;
    private String director;

    public Titulo(TituloOmbd omdb) {
        this.title = omdb.getTitle();
        this.year = omdb.getYear();
        this.director = omdb.getDirector();
    }

    @Override
    public String toString() {
        return "Titulo{" +
                "title='" + title + '\'' +
                ", year='" + year + '\'' +
                ", director='" + director + '\'' +
                '}';
    }
}

Espero que estas sugerencias te sean útiles. ¡Sigue adelante con tus estudios y experimentos en Java!

Espero ter ayudado y bons estudos!