Clase principal.
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner lectura = new Scanner(System.in);
ConsultaApi consulta = new ConsultaApi();
System.out.println("Escribe el numero de la pelicula de Star war que buscas: ");
try{
var numeroPelicula = Integer.valueOf(lectura.nextLine());
Pelicula pelicula = consulta.buscaPelicula(numeroPelicula);
System.out.println(pelicula);
GeneradorDeArchivos generar = new GeneradorDeArchivos();
generar.guardarJson(pelicula);
}catch (NumberFormatException e){
System.out.println("Numero no encontrado" + e.getMessage());
} catch (RuntimeException | IOException e){
System.out.println(e.getMessage());
System.out.println("Finalizando la ejecucion...");
}
/**System.out.println("Título: " + pelicula.titulo());
System.out.println("Episodio: " + pelicula.id_episodio());
System.out.println("Director: " + pelicula.director());
System.out.println("Fecha: " + pelicula.fechaLanzamiento());*/
}
}
Clase que genera archivo
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeneradorDeArchivos {
public void guardarJson(Pelicula pelicula) throws IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter archivo = new FileWriter(pelicula.titulo() + ".json");
archivo.write(gson.toJson(pelicula));
archivo.close();
}
}
clase para consultar la SWAPI
import com.google.gson.Gson;
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 ConsultaApi {
Pelicula buscaPelicula(int numeroDePelicula){
URI direccion = URI.create("https://swapi.py4e.com/api/films/" + numeroDePelicula + "/");
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder().uri(direccion).build();
try {
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString()
);
return new Gson().fromJson(response.body(), Pelicula.class);
} catch (Exception e) {
throw new RuntimeException("No se encontro esa pelicula", e);
}
}
}
records
import com.google.gson.annotations.SerializedName;
public record Pelicula(
@SerializedName("title")
String titulo,
@SerializedName("episode_id")
int id_episodio,
@SerializedName("opening_crawl")
String opening,
String director,
@SerializedName("producer")
String productor,
@SerializedName("release_date")
String fechaLanzamiento
)
{
}