Wie man SMS aus Java sendet

Die folgende Beispiel-Konsolenanwendung, die in der Programmiersprache Java geschrieben ist, zeigt Ihnen, wie Sie HTTP-Anfragen an das SMS-Gateway senden und die Antwortnachricht erhalten können. Diese HTTP-Anfragen können zum Senden von SMS-Nachrichten verwendet werden, und Sie können die Details der SMS-Nachricht leicht konfigurieren, indem Sie die Variablen anpassen, die alle Informationen bezüglich der SMS-Nachricht enthalten.

Was ist eine Java-SMS-API?

Die Java-SMS-API ermöglicht es Ihnen, SMS-Dienste in Ihre Java-Anwendung zu integrieren. Die API kommuniziert mit dem SMS-Gateway über HTTP-Anfragen, die die Nachricht senden und mit einer Antwortnachricht zurückkehren.

Voraussetzungen

SMS aus Java senden

  • Öffnen Sie Apache NetBeans IDE
  • Klicken Sie auf 'Neues Projekt...'
  • Erstellen Sie eine neue Java-Anwendung
  • Benennen Sie das Projekt und das Paket
  • Erstellen Sie eine neue Java-Klasse
  • Kopieren Sie den Beispiel-Quellcode unten und fügen Sie ihn ein
  • Führen Sie die Java-Anwendung aus
  • Wählen Sie bei Bedarf die Hauptklasse aus

Video 1 - Wie man SMS aus Java sendet (Video-Tutorial)

Java-SMS-Quellcode-Beispiel

Der folgende Beispiel-Quellcode, der in der Programmiersprache Java geschrieben ist, kann kostenlos verwendet werden. Sie können ihn einfach in Ihr Projekt implementieren oder den Quellcode anpassen, um ihn für andere Projekte oder Anwendungen zu verwenden. Wenn Sie diesen Beispielcode ausführen möchten, müssen Sie nur eine neue Java-Anwendung mit einer einzigen Java-Klasse erstellen und das Projekt ausführen, wie Sie es in den Schritt-für-Schritt-Anleitungen und dem Video oben sehen können.

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());
        }
    }
}

Schritt 1 - Apache NetBeans IDE öffnen

Der erste Schritt, um eine Java-Anwendung zu erstellen, die SMS-Nachrichten senden kann, besteht darin, Apache NetBeans IDE auf Ihrem Computer zu öffnen. Apache NetBeans bietet Editoren, Assistenten und Vorlagen, die Ihnen helfen, Anwendungen in Java, PHP und vielen anderen Sprachen zu erstellen. Falls Sie Apache NetBeans noch nicht heruntergeladen haben, können Sie es im Abschnitt "Voraussetzungen" herunterladen. Nach der Installation müssen Sie es einfach von Ihrem Desktop aus öffnen, wie in Abbildung 1 gezeigt.

Apache NetBeans IDE öffnen
Abbildung 1 - Apache NetBeans IDE öffnen

Schritt 2 - Ein neues Java-Projekt erstellen

Nachdem Sie Apache NetBeans IDE geöffnet haben, öffnet sich das Hauptfenster. Hier können Sie die Java-Anwendung erstellen, die zum Senden von SMS-Nachrichten benötigt wird. Dazu klicken Sie, wie in Abbildung 2 gezeigt, in der Symbolleiste auf "Datei" und wählen dann die Option "Neues Projekt..." aus.

Neues Java-Projekt erstellen
Abbildung 2 - Neues Java-Projekt erstellen

Schritt 3 - Java-Anwendung auswählen

Als nächstes öffnet sich ein neues Fenster, das alle Projekttypen enthält, die in Apache NetBeans erstellt werden können. Hier können Sie eine einfache Java-Anwendung erstellen oder aus fortgeschritteneren Projekttypen wählen. Für dieses Beispiel können Sie die einfache Java-Anwendung verwenden. Wählen Sie sie also aus der Liste aus und klicken Sie wie in Abbildung 3 auf "Weiter".

Java-Anwendungsprojekttyp auswählen
Abbildung 3 - Java-Anwendungsprojekttyp auswählen

Schritt 4 - Die Java-Anwendung konfigurieren

Im nächsten Schritt müssen Sie einige grundlegende Konfigurationen für die Java-Anwendung vornehmen. Wie in Abbildung 4 zu sehen ist, können Sie einen Namen für das Projekt vergeben. Sie können auch den Speicherort des Projekts festlegen und schließlich einen Namen für das Paket angeben. Wenn Sie mit der Konfiguration fertig sind, klicken Sie einfach auf "Fertigstellen".

Projektnamen und Paket auswählen
Abbildung 4 - Projektnamen und Paket auswählen

Schritt 5 - Eine neue Java-Klasse erstellen

Das erstellte Java-Anwendungsprojekt ist leer und enthält keine Datei mit Quellcode. Daher müssen Sie eine erstellen. Wählen Sie dazu das Paket Ihres Projekts aus und klicken Sie mit der rechten Maustaste darauf. Wie in Abbildung 5 gezeigt, wählen Sie im Pop-up-Fenster "Neu" und dann "Java-Klasse..." aus, um eine neue Java-Klasse in Ihrer Anwendung zu erstellen.

Neue Klasse erstellen
Abbildung 5 - Neue Klasse erstellen

Schritt 6 - Die Java-Klasse konfigurieren

Bevor Sie die Erstellung der Java-Klasse abschließen, müssen Sie einen Namen für die Klasse angeben. Dies kann einfach durchgeführt werden, wie Abbildung 6 zeigt. Nachdem Sie den richtigen Namen für die Java-Klasse vergeben haben, klicken Sie einfach auf die Schaltfläche "Fertigstellen", um die Java-Klasse erfolgreich zu erstellen.

Der neuen Klasse einen Namen geben
Abbildung 6 - Der neuen Klasse einen Namen geben

Schritt 7 - Den Quellcode einfügen

Als Nächstes müssen Sie den Beispielcode in Ihre Java-Anwendung einfügen. Scrollen Sie dazu zum Beispielcode, kopieren Sie den gesamten Quellcode in Ihre Zwischenablage und fügen Sie ihn in Ihre neu erstellte Java-Klasse ein. An diesem Punkt können Sie die Java-Anwendung ausführen. Klicken Sie einfach auf die Schaltfläche "Ausführen" in der Symbolleiste. Beim ersten Ausführen müssen Sie, wie in Abbildung 7 dargestellt, die Hauptklasse für die Ausführung auswählen. Wählen Sie also einfach die Klasse "HttpApiTester" aus und klicken Sie auf "Hauptklasse auswählen".

Code von der Website einfügen und dann Hauptklasse auswählen
Abbildung 7 - Code von der Website einfügen, dann Hauptklasse auswählen

Schritt 8 - Das Ergebnis der Anwendung sehen

Wenn Sie bis zu diesem Punkt alles richtig gemacht haben, startet die Anwendung und Sie können das Ergebnis im Konsolenfenster sehen, wie in Abbildung 8 gezeigt. Dieses Fenster zeigt die HTTP-Anfrage an, die an das SMS-Gateway gesendet wurde, und gibt auch die Antwort des SMS-Gateways aus, die anzeigt, ob die Zustellung der SMS-Nachricht erfolgreich war oder nicht.

Das Programm startet und das Ergebnis wird angezeigt
Abbildung 8 - Das Programm startet und das Ergebnis wird angezeigt

Schritt 9 - Überprüfen Sie das Sendergebnis im Ozeki-Protokoll

In Ozeki 10 SMS Gateway können Sie nachverfolgen, welche Nachrichten von Ihrer Anwendung gesendet wurden, da der HTTP-API-Dienst jedes Ereignis protokolliert, das während seiner Aktivierung auftritt. Nachdem Sie das SMS Gateway geöffnet und die Details des HTTP-API-Dienstes ausgewählt haben, können Sie die Ereignisse einsehen. Wie in Abbildung 9 zu sehen ist, hat der Dienst ein Ereignis protokolliert, als die Beispiel-Java-Anwendung die HTTP-Anfrage an den Dienst gesendet hat.

Protokolle des HTTP-API-Dienstes überprüfen
Abbildung 9 - Protokolle des HTTP-API-Dienstes überprüfen

Die Art und Weise, wie das SMS Gateway die Nachrichten verarbeitet, kann ebenfalls über die Ereignisse zurückverfolgt werden. Öffnen Sie dazu die HTTP-API-Benutzerverbindung, die Sie zuvor konfigurieren mussten. Abbildung 10 zeigt, wie die Verbindung die HTTP-Anfrage verarbeitet und die Nachricht an den Empfänger sendet, den Sie in Ihrer Java-Anwendung angegeben haben.

Protokolle des HTTP-API-Benutzers überprüfen
Abbildung 10 - Protokolle des HTTP-API-Benutzers überprüfen

Zusammenfassung

In diesem Artikel haben Sie gelernt, wie Sie SMS aus Java versenden können. Das bedeutet, dass Sie SMS-Dienste in Ihre Java-Anwendungen integrieren können. Die Grundlage dieser Lösung ist das Ozeki SMS Gateway. Es bedeutet, dass Sie keine Leistungsprobleme oder Verzögerungen beim SMS-Versand haben werden. Auf diese Weise können Ihre Java-Lösungen mehr Kundenbedürfnisse erfüllen und vielseitiger sein. Es wird auch in der Lage sein, den Informationsfluss schneller und einfacher zu gestalten.

Um ein besseres Verständnis des gesamten Systems zu erhalten, können Sie die Ozeki-Tutorialseiten über den Empfang von SMS in Java besuchen, oder versuchen, SMS-Dienste in anderen Projekten zu implementieren. Zum Beispiel, verwenden Sie die HTTP-SMS-API mit PHP.

Das nächste, was Sie tun sollten, ist, das Ozeki SMS Gateway herunterzuladen und sofort mit der Entwicklung zu beginnen!

More information