JAVA – PHP – MySQL: VI Obtener datos de MySQL en JAVA con PHP
Buenas a todos, en este último tutorial de la serie JAVA - PHP - MySQL vamos a hacer justo lo contrario que hicimos en el antiguo tutorial. Vamos a tener dos aplicaciones, la primera de ellas será la aplicación del servidor (PHP) que ofrecerá información en un JSON, la segunda aplicación será la aplicación de escritorio (JAVA) que leerá el JSON que ha generado la aplicación del servidor y gestionará el JSON para mostrarlo en pantalla.
Así pues, antes de empezar me gustaría mostrar el índice y los objetivos de esta serie de tutoriales JAVA - PHP - MySQL:
- JAVA – PHP – MySQL: I Introducción
- JAVA – PHP – MySQL: II Creación de una base de datos en MySQL
- JAVA – PHP – MySQL: III Crear una conexión con la base de datos en PHP
- JAVA – PHP – MySQL: IV Consultas Básicas e inserción de datos en PHP
- JAVA – PHP – MySQL: V Insertar datos en MySQL desde JAVA con PHP
- JAVA – PHP – MySQL: VI Obtener datos de MySQL en JAVA con PHP
Los objetivos que nos proponemos con esta serie de tutoriales son los siguientes:
MySQL
- Aprender a crear una base de datos en MySQL.
PHP
- Aprender a insertar datos en nuestra base de datos.
- Aprender a mostrar datos de nuestra base de datos.
- Consolidar los conocimientos aprendidos en la serie de tutoriales JSON.
- Mostrar los datos introducidos en la base de datos en pantalla.
JAVA
- Crear JSON a partir de los datos introducidos por el usuario.
- Enviar JSON vía GET en JAVA.
- Enviar JSON vía POST en JAVA.
- Obtener un JSON generado en PHP.
Una vez que hemos visto los objetivos de esta serie de tutoriales vamos a proceder a empezar con este último tutorial de la serie JAVA - PHP - MySQL.
Me gustaría empezar explicando el contexto de este tutorial. En los tutoriales anteriores creamos una tabla en nuestra base de datos con el siguiente aspecto:
Nuestro objetivo será extraer los usuarios de la base de datos y encapsular los datos en un JSON que mostraremos con ayuda de PHP.
Creación de un archivo PHP que muestre un JSON
Para poder realizar esta parte vamos a basarnos en un tutorial realizado por mi en Geeky Theory de la serie de tutoriales sobre JSON:
También vamos a tener en cuenta que en el tutorial IV creamos una clase llamada usuariosClass.php con las siguientes funciones:
- conectarBD
- desconectarBD
- getArraySQL
- createUser
- getAllInfo
- getNombre
- getApellidos
- getEmail
Así pues crearemos un archivo PHP llamado getUsuariosJSON.php que muestra un JSON con la información de los usuarios:
<?php /** *Autor: Alejandro Esquiva Rodríguez (@alex_esquiva) *Desarrollado para Geeky Theory * *Este archivo mostrará un JSON para que la aplicación JAVA lo lea */ //--Incluimos el archivo en usuarioClass.php require_once("usuarioClass.php"); //--Creamos una instancia de la calse usuarios $userObject = new Usuarios(); //--Obtenemos un array multidimensional con todos los usuarios registrados $users = $userObject->getAllInfo(); //Codificamos el array multidimensional y lo mostramos en pantalla echo json_encode($users); ?>
Observamos en el código anterior que hemos incluido la clase creada en el tutorial IV usuarioClass.php seguidamente hemos obtenido un array multidimensional con toda la información de todos lo usuarios. Por último hemos codificado y mostrado esa información en JSON.
El resultado de este script es el siguiente:
Esto es lo que vamos a leer y mostrar en nuestra aplicación JAVA.
Leer JSON generado en PHP dede JAVA
La última parte es un poco más complicada, para hacer esta parte vamos a continuar el proyecto que creamos en el tutorial anterior. Recordad que para que la gestión de JSON funcione en JAVA debemos incluir la librería json-simple-1.1.1.jar.
Así pues vamos a crear una nueva clase en JAVA llamada GestionarJSON que tenga dos métodos, el primer método llamado getJSON obtendra en un String el JSON que hemos servido en la parte del servidor. El segundo método llamado showJSON, recibirá como parámetro un JSON el cual se gestionará y se extraerá la información mostrando esta en la consola.
package javaphpmysql; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import static javaphpmysql.JavaPHPMySQL.sendPost; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.JSONValue; public class GestionarJSON { private static final String USER_AGENT = "Mozilla/5.0"; private static final String SERVER_PATH = "http://localhost/"; public static void main(String[] args) { //Obtenemos el JSON String json = getJSON(); //Lo mostramos showJSON(json); } private static String getJSON(){ StringBuffer response = null; try { //Generar la URL String url = SERVER_PATH+"getUsuariosJSON.php"; //Creamos un nuevo objeto URL con la url donde pedir el JSON URL obj = new URL(url); //Creamos un objeto de conexión HttpURLConnection con = (HttpURLConnection) obj.openConnection(); //Añadimos la cabecera con.setRequestMethod("POST"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); // Enviamos la petición por POST con.setDoOutput(true); //Capturamos la respuesta del servidor int responseCode = con.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } //Mostramos la respuesta del servidor por consola System.out.println("Respuesta del servidor: "+response); System.out.println(); //cerramos la conexión in.close(); } catch (Exception e) { e.printStackTrace(); } return response.toString(); } private static void showJSON(String json){ System.out.println("INFORMACIÓN OBTENIDA DE LA BASE DE DATOS:"); //Crear un Objeto JSON a partir del string JSON Object jsonObject =JSONValue.parse(json.toString()); //Convertir el objeto JSON en un array JSONArray array=(JSONArray)jsonObject; //Iterar el array y extraer la información for(int i=0;i<array.size();i++){ JSONObject row =(JSONObject)array.get(i); String nombre = row.get("nombre").toString(); String apellidos = row.get("apellidos").toString(); String email = row.get("email").toString(); //Mostrar la información en pantalla System.out.println("Nombre: " + nombre + "|| Apellidos: " + apellidos + "|| Email: " + email); } } }
Observamos que el código esta comentado, explicando todos los pasos que estamos realizando. Si ejecutamos esta aplicación java observamos que hemos obtenido todos los datos tal como se muestra en la siguiente captura:
Y esto es todo, para terminar me gustaría dejar unos enlaces de interés de tutoriales que podrían mejorar las funcionalidad de esta serie de tutoriales.
- Serie de tutoriales sobre JSON.
- Serie de tutoriales sobre PHP
- Serie de tutoriales sobre JAVA
- Tutorial sobre graficación de datos
PODÉIS DESCARGAR EL CÓDIGO EN EL SIGUIENTE REPOSITORIO DE GITHUB.
Espero que os haya gustado esta serie de tutoriales, si tenéis alguna duda comentarla e intentaremos entre todos resolverla, por último pediros que compartáis esta serie de tutoriales en vuestras redes sociales.
Gracias por todo @alex_esquiva