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

[Proyecto] 13 Haga lo que hicimos en aula

package com.aluracursos.screenmatch.principal;

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 PrincipalConBusqueda {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner teclado = new Scanner(System.in);
        System.out.println("Escriba el nombre de una película:");
        var busqueda = teclado.next();

        String clave = "40a2ff77";
        String direccion = "http://www.omdbapi.com/?t=" + busqueda + "&apikey=" + clave;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(direccion))
                .build();
        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
1 respuesta

Hola Michael,

Parece que estás trabajando en un proyecto que consume una API para buscar información sobre películas. El código que proporcionaste está bastante bien estructurado para hacer una solicitud HTTP a la API de OMDB. Aquí hay algunos consejos y mejoras que podrías considerar:

  1. Manejo de errores: Aunque tu método main ya lanza excepciones IOException e InterruptedException, sería bueno manejar estas excepciones de manera más específica para proporcionar mensajes de error más claros al usuario. Por ejemplo, podrías envolver la llamada a client.send() en un bloque try-catch y manejar las excepciones allí.

  2. Entrada del usuario: Actualmente, estás usando teclado.next(), lo cual solo lee la primera palabra que el usuario ingresa. Si deseas permitir que el usuario ingrese títulos de películas que contengan más de una palabra, podrías usar teclado.nextLine() en su lugar.

    System.out.println("Escriba el nombre de una película:");
    var busqueda = teclado.nextLine();
    
  3. Validación de la respuesta: Sería útil verificar si la respuesta de la API es exitosa antes de intentar procesar el cuerpo de la respuesta. Puedes hacerlo comprobando el estado de la respuesta.

    if (response.statusCode() == 200) {
        System.out.println(response.body());
    } else {
        System.out.println("Error en la solicitud: " + response.statusCode());
    }
    
  4. Cerrar el Scanner: No olvides cerrar el Scanner al final del uso para liberar los recursos.

    teclado.close();
    

Espero que estos consejos te sean útiles para mejorar tu proyecto. ¡Espero haber ayudado y buenos estudios!