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

no me deja buscar otra peli

No me deja buscar otra peli que no sea matrix

package principal;

import com.aluracursos.screenmatch.modules.Titulo;
import com.aluracursos.screenmatch.modules.TituloOmdb;
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.security.Principal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class PrincipalconBusqueda {

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

        while (true) {
            Scanner lectura = new Scanner(System.in);
            List<Titulo> titulos = new ArrayList<>();
            System.out.println("Ingrese el nombre de la pelicula:");


            //Aqui entrada de la busqueda colocada por el usuario.
            var busqueda = lectura.nextLine();

            //Si lo que busca nuestro usuario es igual a salir entonces se rompe el bucle
            if (busqueda.equalsIgnoreCase("exit")){
                break;
            }

            //aqui se agrega a la url la busqueda del usuario
            String direccion = "https://www.omdbapi.com/?t="+busqueda;

            try {
                HttpClient client = HttpClient.newHttpClient();

                //Pedimos los datos
                HttpRequest request = HttpRequest.newBuilder().uri(URI.create(direccion+"x&apikey=35020620")).build();

                //RECIBIMOS LOS DATOS POR RESPUESTA para interpretarlos
                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

                System.out.println(response.body());

                //USANDO LIBRERIAS y CONVIETIENDO A MAYUSCULAS
                Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();

                //Convertimos la respuesta a json
                String json = response.body();

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

                //Excepciones

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

                //AGREGAMOS CADA UNO DE LOS TITULOS QUE VAMOS BUSCANDO
                titulos.add(miTitulo);

            } catch (NumberFormatException e) {
                //enviamos un mensaje de que ocurrio un error
                System.out.println("ocurrio un error:");
                //capturamos el error y lo mostramos por pantalla
                System.out.println(e.getMessage());
            } catch (IllegalArgumentException e) {
                System.out.println("ocurrio un error verifique la dirrec:");
                System.out.println(e.getMessage());
            }catch (Exception e) {
                System.out.println("ocurrio un error en la inspeccion");
            }


        }

        System.out.println("ejecucion finalizada");


    }
}
1 respuesta

Hola Julio,

Parece que estás teniendo problemas con la búsqueda de películas en tu aplicación Java, ya que solo te permite buscar "Matrix". Vamos a revisar el código para ver qué podría estar causando este problema.

Una posible razón por la cual no puedes buscar otras películas podría estar relacionada con cómo estás construyendo la URL para la solicitud a la API de OMDB. En tu código, la línea donde construyes la URL es la siguiente:

String direccion = "https://www.omdbapi.com/?t="+busqueda;

Asegúrate de que la variable busqueda esté capturando correctamente el nombre de la película que ingresas. Además, en la línea donde construyes la solicitud HTTP:

HttpRequest request = HttpRequest.newBuilder().uri(URI.create(direccion+"x&apikey=35020620")).build();

Observa que hay una "x" adicional en direccion+"x&apikey=35020620". Esta "x" podría estar causando que la URL sea incorrecta, lo que resultaría en que la API no pueda encontrar la película que estás buscando. Deberías eliminar esa "x" para que el código sea:

HttpRequest request = HttpRequest.newBuilder().uri(URI.create(direccion+"&apikey=35020620")).build();

Después de hacer este cambio, intenta ejecutar tu programa nuevamente y busca diferentes películas para ver si el problema se resuelve.

Espero que esta sugerencia te ayude a solucionar el problema.