JAVA – PHP – MySQL: VI Obtener datos de MySQL en JAVA con PHP

Consigue gratis tu cuenta

Curso de Laravel

Laravel es uno de los frameworks de desarrollo web más demandado por las empresas. En este curso aprenderás a crear tu propio Instagram paso por paso y de forma totalmente práctica. ¿Preparado?

Comenzar ahora
Portada6

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:

  1. JAVA – PHP – MySQL: I Introducción
  2. JAVA – PHP – MySQL: II Creación de una base de datos en MySQL
  3. JAVA – PHP – MySQL: III Crear una conexión con la base de datos en PHP
  4. JAVA – PHP – MySQL: IV Consultas Básicas e inserción de datos en PHP
  5. JAVA – PHP – MySQL: V Insertar datos en MySQL desde JAVA con PHP
  6. 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:

Captura6v2

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:

captura1

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:

Captura2

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.

PODÉIS DESCARGAR EL CÓDIGO EN EL SIGUIENTE REPOSITORIO DE GITHUB.

github-logo

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


¿Quieres seguir aprendiendo?