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

    package com.oasb.Screen_Macht.excepciones;

    public class ErrorEnConversionDeDuracionExcepcion extends RuntimeException {
        private String mensaje ;


        public ErrorEnConversionDeDuracionExcepcion(String mensaje) {
            this. mensaje = mensaje;

        }

        @Override
        public String getMessage(){
            return this.mensaje;
        }
    }
    

CLASE PRINCIPAL CON BUSQUEDA

        package com.oasb.Screen_Macht.principal;

    import com.google.gson.FieldNamingPolicy;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.oasb.Screen_Macht.excepciones.ErrorEnConversionDeDuracionExcepcion;
    import com.oasb.Screen_Macht.modelosAplicacion.TITULO;
    import com.oasb.Screen_Macht.modelosAplicacion.TITULO_OMDB;

    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.Scanner;

    public class PRINCIPAL_CON_BUSQUEDA {

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

            //busqueda


            Scanner lectura = new Scanner(System.in);
            System.out.println("ESCRIBA EL NOMBRE DE UNA PELICULA: ");
            var busqueda = lectura.nextLine();

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

            // peticion de informacion del cliente hacia el servidor

            //IDENTIFICACION y MANEJO de posibles correccion de errores  debido a NumberFormatException principalmente

            try {
                HttpClient client = HttpClient.newHttpClient();

                HttpRequest request = HttpRequest.newBuilder() //patron de diseño es un
                        // patrón de diseño creacional que se usa para construir objetos complejos de manera paso a paso.
                        // En lugar de crear objetos directamente con un constructor grande y lleno de parámetros, el Builder
                        // permite que la construcción sea más clara, organizada y flexible.
                        .uri(URI.create(direccion)) // aqui se pega la url que se obtuvo de postman
                        .build();


                // respuesta del servidor hacia el cliente
                HttpResponse<String> response = client
                        .send(request, HttpResponse.BodyHandlers.ofString());

                String json = response.body();//en esta variable se encuentra el json
                System.out.println(json);


                // se importa la biblioteca gson para poder agrupar los datos requeridos por el usuario o cliente
                // de Json a clase
                Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();

                //TITULO miTitulo = gson.fromJson(json, TITULO.class); //archivo json convertido a una clase TITULO
                TITULO_OMDB miTitulo_OMDB = gson.fromJson(json, TITULO_OMDB.class);
                System.out.println( "Titulo: " + miTitulo_OMDB );



                TITULO miTitulo = new TITULO(miTitulo_OMDB);
                System.out.println("TITULO YA CONVERTIDO" +miTitulo);
            } catch (NumberFormatException e) { // e = excepcion
                System.out.println("OCURRIO UN ERROR: ");
                System.out.println(e.getMessage());
            } catch ( NullPointerException | IllegalArgumentException  e) {
                System.out.println("OCURRIO UN ERROR EN LA URL, VERIFIQUE LA DIRECCION ");
            }catch (ErrorEnConversionDeDuracionExcepcion e){
                System.out.println( e.getMessage() );
            }

            System.out.println("FINALIZO LA EJECCION DEL PROGRAMA");

        }

    }

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Estudiante, espero que estés bien

Parece que estás trabajando con una API para obtener información sobre películas y manejando excepciones personalizadas. Aquí tienes algunos consejos para mejorar o ajustar tu código:

  1. Clave de API: Asegúrate de reemplazar "XXXXXXX" con tu clave de API real para que la solicitud funcione correctamente.

  2. Manejo de Excepciones:

    • La excepción ErrorEnConversionDeDuracionExcepcion parece estar diseñada para manejar errores específicos de conversión. Asegúrate de lanzar esta excepción en el lugar correcto de tu código, probablemente en la parte donde intentas convertir datos que podrían no estar en el formato esperado.
    • Considera añadir más detalles en los mensajes de error para facilitar la depuración.
  3. Validación de Datos:

    • Antes de intentar convertir o procesar datos del JSON, verifica si los campos necesarios están presentes y son válidos. Por ejemplo, si el campo runtime es "N/A", puedes manejarlo antes de intentar cualquier conversión.
  4. Mejora de la URL:

    • Asegúrate de que los espacios en el nombre de la película se manejen correctamente. Aunque estás reemplazando espacios con guiones, considera usar URLEncoder.encode(busqueda, "UTF-8") para asegurar que todos los caracteres especiales se codifiquen adecuadamente.
  5. Pruebas y Depuración:

    • Prueba con diferentes nombres de películas para ver cómo maneja tu programa los distintos casos, como películas que no existen o que tienen datos faltantes.

Espero que estos consejos te sean útiles para mejorar tu programa. ¡Bons estudios!