package service;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsumoAPI {
public String obtenerDatos(String direccion) {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(direccion))
.build();
HttpResponse<String> response;
try {
response = client.send(request, HttpResponse.BodyHandlers.ofString());
return response.body();
} catch (IOException | InterruptedException e) {
throw new RuntimeException("No se pudieron obtener los datos de la API");
}
}
package service;
public interface IConvierteDatos {
T obtenerDatos(String json, Class clase);
}
package service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ConvierteDatos implements IConvierteDatos {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
public <T> T obtenerDatos(String json, Class<T> clase) {
try {
return objectMapper.readValue(json, clase);
} catch (JsonProcessingException e) {
throw new RuntimeException("Error al convertir el JSON a objeto Java");
}
}
}
package model;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DatosSerie(
@JsonAlias("Title") String titulo,
@JsonAlias("Year") String anio,
@JsonAlias("Genre") String genero,
@JsonAlias("Plot") String sinopsis,
@JsonAlias("imdbRating") String evaluacion
) {
}
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
ConsumoAPI consumo = new ConsumoAPI();
ConvierteDatos conversor = new ConvierteDatos();
String direccionBase = "https://www.omdbapi.com/?t=";
String apiKey = "&apikey=TU_API_KEY";
System.out.println("Escribe el nombre de la serie:");
String nombreSerie = teclado.nextLine();
String json = consumo.obtenerDatos(direccionBase + nombreSerie.replace(" ", "+") + apiKey);
DatosSerie datos = conversor.obtenerDatos(json, DatosSerie.class);
System.out.println("\n***** DATOS DE LA SERIE *****");
System.out.println("Título: " + datos.titulo());
System.out.println("Año: " + datos.anio());
System.out.println("Género: " + datos.genero());
System.out.println("Sinopsis: " + datos.sinopsis());
System.out.println("Evaluación: " + datos.evaluacion());
}
}