Cómo enviar SMS desde Java

El siguiente ejemplo de aplicación de consola escrita en el lenguaje de programación Java te mostrará cómo puedes enviar solicitudes HTTP al SMS Gateway y obtener también el mensaje de respuesta. Estas solicitudes HTTP pueden usarse para enviar mensajes SMS y puedes configurar fácilmente los detalles del mensaje SMS modificando las variables que contienen toda la información relacionada con el mensaje SMS.

¿Qué es una API de SMS para Java?

La API de SMS para Java te permite implementar servicios de SMS en tu aplicación Java. La API se comunica con el SMS Gateway mediante solicitudes HTTP que envían el mensaje y devuelven un mensaje de respuesta.

Requisitos previos

Enviar SMS desde Java

  • Abre Apache NetBeans IDE
  • Haz clic en 'Nuevo proyecto...'
  • Crea una nueva aplicación Java
  • Nombra el proyecto y el paquete
  • Crea una nueva clase Java
  • Copia y pega el código fuente de ejemplo a continuación
  • Ejecuta la aplicación Java
  • Selecciona la clase principal si es necesario

Video 1 - Cómo enviar SMS desde JAVA (Tutorial en video)

Ejemplo de código fuente de SMS en Java

El siguiente código fuente de ejemplo escrito en el lenguaje de programación Java es de uso gratuito, puedes implementarlo simplemente en tu proyecto, o puedes modificar el código fuente para usarlo en otros proyectos o aplicaciones. Si deseas ejecutar este código de ejemplo, solo necesitas crear una nueva aplicación Java con una sola clase Java y ejecutar el proyecto como puedes ver en las instrucciones paso a paso y el video anterior.

package tester;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class HttpApiTester {

    public static void main(String[] args) {

        TrustManager[] trustAllCerts = new TrustManager[]{
            new X509TrustManager() {
                @Override
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[0];
                }

                @Override
                public void checkClientTrusted(
                        java.security.cert.X509Certificate[] certs, String authType) {
                }

                @Override
                public void checkServerTrusted(
                        java.security.cert.X509Certificate[] certs, String authType) {
                }
            }
        };

        try {
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

            HostnameVerifier allHostsValid = new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            };
            HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);

        } catch (GeneralSecurityException e) {
            System.out.println(e.getMessage());
        }

        try {
            StringBuilder sendString = new StringBuilder();
            String username = "john";
            String password = "Xc3ffs";
            String messagetype = "SMS:TEXT";
            String httpUrl = "https://127.0.0.1:9508/";
            String recipient = URLEncoder.encode("+36201324567", "UTF-8");
            String messagedata = URLEncoder.encode("TestMessage", "UTF-8");

            sendString.append(httpUrl).append("api?action=sendmessage").
                    append("&username=").append(username).append("&password=").
                    append(password).append("&recipient=").append(recipient).
                    append("&messagetype=").append(messagetype).append("&messagedata=").
                    append(messagedata);

            System.out.println("Sending request: " + sendString.toString());

            URL url = new URL(sendString.toString());
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");

            BufferedReader br = null;
            System.out.println("Http response received: ");
            if (con.getResponseCode() == 200) {
                br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String strCurrentLine;
                while ((strCurrentLine = br.readLine()) != null) {
                    System.out.println(strCurrentLine);
                }
            } else {
                br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
                String strCurrentLine;
                while ((strCurrentLine = br.readLine()) != null) {
                    System.out.println(strCurrentLine);
                }
            }

        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }
}

Paso 1 - Abrir Apache NetBeans IDE

El primer paso para crear una aplicación Java que pueda enviar mensajes SMS es abrir Apache NetBeans IDE en tu computadora. Apache NetBeans proporciona editores, asistentes y plantillas para ayudarte a crear aplicaciones en Java, PHP y muchos otros lenguajes. Si aún no has descargado Apache NetBeans, puedes descargarlo desde la sección de Requisitos previos. Después de instalarlo, solo tienes que abrirlo desde tu escritorio como en la Figura 1.

abrir apache netbeans ide
Figura 1 - Abrir Apache NetBeans IDE

Paso 2 - Crear un nuevo proyecto Java

Después de abrir Apache NetBeans IDE, se abre con la ventana principal. Aquí, puedes crear la aplicación Java necesaria para enviar mensajes SMS. Para ello, como puedes ver en la Figura 2, haz clic en 'Archivo' en la barra de herramientas, y aquí, selecciona la opción 'Nuevo proyecto...'.

crear nuevo proyecto java
Figura 2 - Crear nuevo proyecto Java

Paso 3 - Seleccionar Aplicación Java

A continuación, aparece una nueva ventana que contiene todos los tipos de proyectos que se pueden crear en Apache NetBeans. Aquí, puedes crear la aplicación Java simple, o puedes seleccionar entre tipos de proyectos más avanzados. Para este ejemplo puedes usar la aplicación Java simple, así que selecciónala de la lista y, como en la Figura 3, haz clic en Siguiente.

seleccionar tipo de proyecto de aplicación java
Figura 3 - Seleccionar tipo de proyecto de aplicación Java

Paso 4 - Configurar la Aplicación Java

En el siguiente paso, necesitas hacer una configuración básica para la aplicación Java. Como puedes ver en la Figura 4, puedes dar un nombre al proyecto. También puedes establecer la ubicación del proyecto y, por último, puedes especificar un nombre para el paquete. Si has terminado con la configuración, solo haz clic en Finalizar.

elegir nombre del proyecto y paquete
Figura 4 - Elegir nombre del proyecto y paquete

Paso 5 - Crear una nueva clase Java

El proyecto de aplicación Java creado está vacío, por lo que no contiene ningún archivo con código fuente, por lo que necesitas crear uno. Para ello, selecciona el paquete de tu proyecto, y haz clic con el botón derecho del ratón. Desde la ventana emergente, como muestra la Figura 5, selecciona Nuevo, y después, haz clic en 'Clase Java...' para crear una nueva clase Java en tu aplicación.

crear nueva clase
Figura 5 - Crear nueva clase

Paso 6 - Configurar la clase Java

Antes de finalizar la creación de la clase Java, necesitas especificar un nombre para la clase. Eso se puede hacer fácilmente como muestra la Figura 6. Después de dar el nombre correcto a la clase Java, solo haz clic en el botón Finalizar para crear exitosamente la clase Java.

dar un nombre a la nueva clase
Figura 6 - Dar un nombre a la nueva clase

Paso 7 - Pegar el código fuente

Lo siguiente que necesitas hacer es colocar el código de ejemplo en tu aplicación Java. Para ello, solo desplázate hasta el código de ejemplo, copia todo el código fuente en tu portapapeles y colócalo en tu clase Java recién creada. En este punto, puedes ejecutar la aplicación Java, así que solo haz clic en el botón Ejecutar en la barra de herramientas. En la primera ejecución, como demuestra la Figura 7, necesitas seleccionar la clase principal para la ejecución. Así que, solo selecciona la clase HttpApiTester y haz clic en 'Seleccionar clase principal'.

pegar código desde el sitio web luego seleccionar clase principal
Figura 7 - Pegar código desde el sitio web, luego seleccionar clase principal

Paso 8 - Ver el resultado de la aplicación

Si has hecho todo correctamente hasta este punto, la aplicación se inicia y podrás ver el resultado en la ventana de consola como muestra la Figura 8. Esta ventana imprime la solicitud HTTP que se inició y envió al SMS Gateway, y también imprime la respuesta del SMS Gateway que indica si el envío del mensaje SMS fue exitoso o no.

el programa se inicia y se muestra el resultado
Figura 8 - El programa se inicia y se muestra el resultado

Paso 9 - Verificar el resultado del envío en el registro de Ozeki

En Ozeki 10 SMS Gateway, puedes seguir qué mensajes envió tu aplicación, ya que el servicio HTTP API registra cada evento que ocurre mientras está habilitado. Así que, después de abrir el SMS Gateway y seleccionar los detalles del servicio HTTP API, podrás ver los eventos. Como muestra la Figura 9, el servicio registró un evento, cuando la aplicación Java de ejemplo envió la solicitud HTTP al servicio.

verificar los registros del servicio HTTP API
Figura 9 - Verificar los registros del servicio HTTP API

La forma en que el SMS Gateway procesa los mensajes también se puede ver a través de los eventos. Para ello, abre la conexión del usuario HTTP API, que debiste configurar antes. La Figura 10 demuestra cómo la conexión maneja la solicitud HTTP y envía el mensaje al destinatario que especificaste en tu aplicación Java.

verificar los registros del usuario HTTP API
Figura 10 - Verificar los registros del usuario HTTP API

Resumen

Has aprendido cómo enviar SMS desde Java con este artículo. Esto significa que puedes implementar servicios de SMS en tus aplicaciones Java. La base de esta solución es el Ozeki SMS Gateway. Esto significa que no tendrás problemas de rendimiento ni latencia en el envío de SMS. De esta manera, tus soluciones Java pueden satisfacer más necesidades de los clientes y serán versátiles. También podrán hacer que el flujo de información sea más rápido y fácil.

Para tener una mejor comprensión de todo el sistema, no dudes en consultar las páginas de tutoriales de Ozeki sobre recibir SMS en Java, o intenta implementar servicios de SMS en otros proyectos. Por ejemplo, usa la API HTTP de SMS con PHP.

Lo siguiente que debes hacer es descargar el Ozeki SMS Gateway y ¡comenzar a desarrollar ahora!

More information