PokeAPI#
Aquí te presento un ejemplo de código en Java que realiza una consulta al API de PokeAPI. Usaremos HttpURLConnection
para hacer la solicitud HTTP GET y la biblioteca org.json
para procesar la respuesta en formato JSON.
Dependencias Maven#
Para manejar las respuestas JSON, utilizaremos la biblioteca org.json
. Puedes agregarla en tu proyecto de Maven de la siguiente manera, si es que usas Maven:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
Dependencias de Maven#
%%loadFromPOM
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240303</version>
</dependency>
Código en Java#
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;
public class PokeApiClient {
// Método para consultar el API de PokeAPI y obtener información de un Pokémon
public static String getPokemonData(String pokemonName) {
String urlString = "https://pokeapi.co/api/v2/pokemon/" + pokemonName.toLowerCase();
HttpURLConnection connection = null;
BufferedReader reader = null;
StringBuilder responseContent = new StringBuilder();
try {
// Crear objeto URL con la URL del Pokémon
URL url = new URL(urlString);
// Abrir la conexión
connection = (HttpURLConnection) url.openConnection();
// Establecer el método de solicitud como GET
connection.setRequestMethod("GET");
// Establecer tiempo de espera para la conexión (opcional)
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// Verificar el código de respuesta HTTP
int status = connection.getResponseCode();
if (status != 200) {
throw new RuntimeException("Error: %d - No se pudo obtener información del Pokémon.".formatted(status));
}
// Leer la respuesta del servidor
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
responseContent.append(line);
}
// Convertir la respuesta en JSON y extraer algunos datos
JSONObject pokemonJson = new JSONObject(responseContent.toString());
// Obtener el nombre del Pokémon
String name = pokemonJson.getString("name");
// Obtener el peso del Pokémon
int weight = pokemonJson.getInt("weight");
// Obtener la lista de tipos del Pokémon
String types = "";
for (int i = 0; i < pokemonJson.getJSONArray("types").length(); i++) {
types += pokemonJson.getJSONArray("types")
.getJSONObject(i)
.getJSONObject("type")
.getString("name");
if (i < pokemonJson.getJSONArray("types").length() - 1) {
types += ", ";
}
}
// Retornar los datos obtenidos
return "Nombre: %s. Peso: %d. Tipos: %s".formatted(name, weight, types);
} catch (Exception e) {
e.printStackTrace();
return "Error al obtener los datos del Pokémon.";
} finally {
// Cerrar el lector y la conexión
try {
if (reader != null) reader.close();
if (connection != null) connection.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args) {
// Consultar los datos de un Pokémon (ejemplo: "pikachu")
String[] pokemones = {"pikachu", "rayquaza", "torchic"};
for(String pokenom: pokemones){
String pokemonInfo = getPokemonData(pokenom);
System.out.println(pokemonInfo);
}
}
}
// Probando clase PokeApiClient
new PokeApiClient().main(null);
Nombre: pikachu. Peso: 60. Tipos: electric
Nombre: rayquaza. Peso: 2065. Tipos: dragon, flying
Nombre: torchic. Peso: 25. Tipos: fire
Descripción del Código#
URL de la API: Se construye la URL usando el nombre del Pokémon proporcionado. Por ejemplo, si quieres obtener datos de «Pikachu», la URL es
https://pokeapi.co/api/v2/pokemon/pikachu
.Conexión HTTP: Se establece una conexión HTTP con el método
GET
. Si la respuesta es exitosa (código de estado 200), se procede a leer el contenido de la respuesta.Procesamiento de JSON: Se utiliza la clase
JSONObject
para interpretar la respuesta JSON. Se obtienen campos como el nombre del Pokémon, su peso y sus tipos.Estructura: El código está estructurado para manejar excepciones y garantizar que los recursos, como las conexiones y los lectores, se cierren adecuadamente.
Prueba: En el método
main
, se hace una prueba solicitando la información del Pokémon «Pikachu». El resultado se imprime en la consola.
Este es un ejemplo básico que puedes extender para obtener más información de otros endpoints de la PokeAPI o manejar datos adicionales como habilidades, estadísticas, entre otros.