java

Petición HTTP GET en Java para consumir HTML o JSON

Obtener respuesta de URL con Java y HttpUrlConnection

En este tutorial vamos a ver cómo hacer una petición HTTP de tipo GET con Java. Es decir, obtener la respuesta HTTP (ya sea HTML, JSON, texto, etcétera) que se obtiene al visitar una URL.

No vamos a usar ninguna librería externa ni paquetes de terceros, solamente URL, HttpUrlConnection y algunos búferes.

Esto será simple pero a partir de esto podremos hacer peticiones más grandes.

Imports necesarios

Vamos a importar los siguientes paquetes que ya están en la “librería estándar” de Java:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

Con eso tenemos.

Lo que vamos a consumir

Para no tener que configurar un servidor ni esas cosas (eso será parte de otro post) vamos a consumir la API de JSONPlaceholder.

Eso regresa un JSON que por el momento no vamos a parsear para efectos de simplicidad, pero vamos a imprimirlo.

Actualización: si quieres puedes ver cómo parsear el JSON recibido en este otro post.

Configurando entorno

Si no tienes Java, mira cómo instalarlo aquí. También recomiendo instalar NetBeans para que tu desarrollo en Java sea más fácil.

Función para hacer una petición GET en Java

La función que vamos a ver recibe una cadena, que es la ruta absoluta o URL que vamos a consumir. Está definida para lanzar una excepción, por lo que al llamarla debemos encerrarla en un try catch.

public static String peticionHttpGet(String urlParaVisitar) throws Exception {
  // Esto es lo que vamos a devolver
  StringBuilder resultado = new StringBuilder();
  // Crear un objeto de tipo URL
  URL url = new URL(urlParaVisitar);

  // Abrir la conexión e indicar que será de tipo GET
  HttpURLConnection conexion = (HttpURLConnection) url.openConnection();
  conexion.setRequestMethod("GET");
  // Búferes para leer
  BufferedReader rd = new BufferedReader(new InputStreamReader(conexion.getInputStream()));
  String linea;
  // Mientras el BufferedReader se pueda leer, agregar contenido a resultado
  while ((linea = rd.readLine()) != null) {
    resultado.append(linea);
  }
  // Cerrar el BufferedReader
  rd.close();
  // Regresar resultado, pero como cadena, no como StringBuilder
  return resultado.toString();
}

Regresa una cadena que será la respuesta HTTP. Podemos llamarla desde cualquier lugar o modificarla de acuerdo a nuestras necesidades.

Ejemplo de petición HTTP GET en Java

Ahora sí veamos el ejemplo en donde consumimos la API de JSONPlaceholder. La URL será un “todo” es decir un quehacer o cosa pendiente, la URL es: https://jsonplaceholder.typicode.com/todos/1

Con el navegador, la respuesta es:

Respuesta de JSONPlaceholder

Ahora veamos este código que hace la petición con todo y try catch:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
class Main {
 public static void main(String[] args) {
  String url = "https://jsonplaceholder.typicode.com/todos/1";
  String respuesta = "";
  try {
   respuesta = peticionHttpGet(url);
   System.out.println("La respuesta es:\n" + respuesta);
  } catch (Exception e) {
   // Manejar excepción
   e.printStackTrace();
  }
 }

 public static String peticionHttpGet(String urlParaVisitar) throws Exception {
  // Esto es lo que vamos a devolver
  StringBuilder resultado = new StringBuilder();
  // Crear un objeto de tipo URL
  URL url = new URL(urlParaVisitar);

  // Abrir la conexión e indicar que será de tipo GET
  HttpURLConnection conexion = (HttpURLConnection) url.openConnection();
  conexion.setRequestMethod("GET");
  // Búferes para leer
  BufferedReader rd = new BufferedReader(new InputStreamReader(conexion.getInputStream()));
  String linea;
  // Mientras el BufferedReader se pueda leer, agregar contenido a resultado
  while ((linea = rd.readLine()) != null) {
   resultado.append(linea);
  }
  // Cerrar el BufferedReader
  rd.close();
  // Regresar resultado, pero como cadena, no como StringBuilder
  return resultado.toString();
 }
}

Así es como consumimos un JSON a través de una URL con Java, en los siguientes posts veremos cómo parsear este JSON.

Al ejecutar este código, la salida es:

Probando petición HTTP GET con Java y JSONPlaceholder

Con eso sentamos las bases para consumir cualquier servicio web ya sea programado por nosotros o para consumir la API de cualquier otro sitio.

Te invito a leer más sobre Java o el consumo de API’s.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.