Wie man eine SMS in Java plant

Der einfachste Weg, SMS von Java aus zu versenden, ist die Verwendung der integrierten HTTP/Rest-SMS-API von Ozeki SMS Gateway. Wenn Sie diese API verwenden, senden Sie SMS-Nachrichten, indem Sie eine HTTP-Post-Anfrage an das SMS-Gateway stellen. Die HTTP-Post-Anfrage wird eine Nachricht im JSON-Format enthalten. Das SMS-Gateway wird diese SMS an die Empfängertelefonnummer senden und eine HTTP-200-OK-Antwort auf Ihre Anfrage zurückgeben.

wie man eine geplante SMS von Java aus sendet
Abbildung 1 - Wie man eine geplante SMS von Java aus sendet

Java-Code zum Senden einer SMS an ein Mobiltelefon

Das Java-SMS-Codebeispiel unten zeigt, wie Sie SMS mit der HTTP-Rest-SMS-API von Ozeki SMS Gateway unter Verwendung der Java Ozeki.Libs.Rest-Bibliothek senden können. Diese Bibliothek wird Ihnen kostenlos zur Verfügung gestellt, und Sie können sie in Ihren Projekten verwenden und modifizieren.

Main.java
import Ozeki.Libs.Rest.*;
import java.time.LocalDateTime;

public class Main {

    public static void main(String[] args) {

        var configuration = new Configuration();
        configuration.Username = "http_user";
        configuration.Password = "qwe123";
        configuration.ApiURL = "http://127.0.0.1:9509/api";

        var msg = new Message();
        msg.ToAddress = "+36201111111";
        msg.Text = "Hallo Welt!";
        msg.TimeToSend = LocalDateTime.parse("2021-06-11T13:52:00");

        var api = new MessageApi(configuration);
        
        var result = api.Send(msg);
        
        System.out.println(result);
    }
}
	

Wie man das Java-SMS-Beispiel verwendet:

Sie können die Message-Klasse verwenden, um die SMS zu erstellen, und Sie können die MessageApi-Klasse verwenden, um die SMS an das SMS-Gateway zu senden. Das SMS-Gateway leitet Ihre Nachricht entweder über eine drahtlose Verbindung oder über das Internet an das Mobilfunknetz weiter.

SendScheduledSms.java herunterladen

Der in diesem Artikel erklärte Quellcode kann kostenlos heruntergeladen, verwendet und modifiziert werden.
Download: SendScheduledSms.java.zip (80,2Kb)

Was befindet sich in der SendScheduledSms.java.zip-Datei?

Die SendScheduledSms.java.zip-Datei enthält die Ozeki-Bibliothek, die Ihnen alle notwendigen Werkzeuge zum Senden und Empfangen von SMS-Nachrichten bietet. Sie finden dort auch eine Main.java-Datei im Projekt, die den Beispielcode enthält, der Ihnen zeigt, wie Sie eine SMS senden. Dieser Beispielcode ist unten aufgeführt.

Abbildung 2 - SendScheduledSms.java-Verzeichnis

Wie man eine geplante SMS von Java aus sendet (Schnelle Schritte)

Um eine geplante SMS von Java aus zu senden:

  1. Installieren Sie Ozeki SMS Gateway
  2. Verbinden Sie Ozeki SMS Gateway mit dem Mobilfunknetz
  3. Senden Sie eine Test-SMS über die Ozeki-GUI
  4. Erstellen Sie einen HTTP-SMS-API-Benutzer
  5. Apache NetBeans
  6. Erstellen Sie ein Projekt namens SendScheduledSms
  7. Fügen Sie den Code in eine neu erstellte Main.java-Datei ein oder verwenden Sie die Main.java-Datei in der .zip-Datei
  8. Erstellen Sie die SMS, indem Sie ein neues Message-Objekt erstellen
  9. Erstellen Sie eine API, um Ihre Nachricht zu senden
  10. Verwenden Sie die Send-Methode, um Ihre Nachricht zu senden
  11. Geben Sie das TimeToSend-Attribut der neu erstellten Nachricht an
  12. Lesen Sie die Antwortnachricht auf der Konsole
  13. Überprüfen Sie die Protokolle im SMS-Gateway

Installieren Sie Ozeki SMS Gateway und erstellen Sie einen HTTP-API-Benutzer

Um SMS von Java aus senden zu können, müssen Sie zunächst Ozeki SMS Gateway installieren. Das SMS-Gateway kann auf demselben Computer installiert werden, auf dem Sie Ihren Java-Code in Apache NetBeans entwickeln. Nach der Installation besteht der nächste Schritt darin, Ozeki SMS Gateway mit dem Mobilfunknetz zu verbinden. Sie können einen HTTP-SMS-API-Benutzer zu erstellen. Erstellen Sie einen Benutzer mit dem Benutzernamen "http_user" und dem Passwort "qwe123", damit das Beispiel ohne Änderungen funktioniert.

Nachdem die Umgebung eingerichtet ist, können Sie Ihren Java-Code ausführen.

HTTP-API-URL zum Senden von SMS von Java aus

Um SMS von Java aus zu senden, muss Ihre Java-Anwendung eine HTTP-Anfrage an das SMS-Gateway stellen. Die API-URL wird unten angezeigt. Beachten Sie, dass die IP-Adresse (127.0.0.1) durch die IP-Adresse Ihres SMS-Gateways ersetzt werden sollte. Wenn Ozeki SMS Gateway auf demselben Computer installiert ist, auf dem die Java-SMS-Anwendung läuft, kann dies 127.0.0.1 sein. Wenn es auf einem anderen Computer installiert ist, sollte es die IP-Adresse dieses Computers sein.

http://127.0.0.1:9509/api?action=rest
	

HTTP-Authentifizierung zum Senden von SMS von Java aus

Um den Java-SMS-Client zu authentifizieren, müssen Sie den Benutzernamen und das Passwort in einer base64-kodierten Zeichenkette an den Server in einer HTTP-Anfrage senden. Das verwendete Format ist: base64(Benutzername+":"+Passwort). In Java können Sie den folgenden Code verwenden, um diese Kodierung durchzuführen:

var usernamePassword = username + ":" + password;
var encodedUsernamePassword = usernamePassword.getBytes();
return "Basic " + Base64.getEncoder().encodeToString(encodedUsernamePassword);
	

Wenn Sie beispielsweise den Benutzernamen 'http_user' und das Passwort 'qwe123' kodieren, erhalten Sie die folgende base64-kodierte Zeichenkette: aHR0cF91c2VyOnF3ZTEyMw==. Zum Senden

HTTP-Anforderungsheader zum Senden einer geplanten SMS von Java

Um die geplante SMS-Nachricht zu senden, müssen Sie die folgenden Zeilen als Header in die HTTP-Anforderung aufnehmen. Beachten Sie, dass wir einen Content-Type und einen Authorization-Header einfügen.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

HTTP-Anforderung zum Senden einer SMS von Java

Um die SMS zu übermitteln, sendet Ihre Java-Anwendung eine HTTP-Anforderung ähnlich der untenstehenden. Beachten Sie, dass diese Anforderung einen HTTP-Header-Teil und einen HTTP-Body-Teil enthält. Der HTTP-Body ist eine JSON-kodierte Datenzeichenfolge. Sie enthält die Empfängernummer und den Text der Nachricht.

POST /api?action=sendmsg HTTP/1.1
HTTP2-Settings: AAEAAEAAAAIAAAABAAMAAABkAAQBAAAAAAUAAEAA
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
Content-Length: 320
Content-Type: application/json
Accept: application/json
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
User-Agent: Java-http-client/16.0.1

{
"messages":	[
	{
		"message_id": "5b9cea01-6bc0-42a7-9409-7b86eedf851b",
		"submit_report_requested": true,
		"view_report_requested": true,
		"valid_until": "2021-06-18 13:49:36",
		"time_to_send": "2021-06-11 13:52:00",
		"to_address": "+36201111111",
		"text": "Hello world!",
		"create_date": "2021-06-11 13:49:36",
		"delivery_report_requested": true
	}
]
}
	

HTTP-Antwort, die vom Java-SMS-Beispiel empfangen wurde

Sobald das SMS-Gateway diese Anforderung empfängt, wird es eine HTTP-Antwort generieren. Die HTTP-Antwort enthält einen Statuscode, der angibt, ob die SMS-Übermittlungsanforderung erfolgreich war oder nicht. Sie gibt auch eine JSON-kodierte Struktur zurück, die Ihnen nützliche Details über die Nachrichtenübermittlung liefert.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.120 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Fri, 11 Jun 2021 13:37:11 GMT
Server: 10/10.3.120
Transfer-Encoding: chunked

{
"http_code": 200,
"response_code": "SUCCESS",
"response_msg": "Messages queued for delivery.",
"data": {
  "total_count": 1,
  "success_count": 1,
  "failed_count": 0,
  "messages": [
    {
      "message_id": "5b9cea01-6bc0-42a7-9409-7b86eedf851b",
      "from_station": "%",
      "to_address": "+36201111111",
      "to_station": "%",
      "text": "Hello world!",
      "create_date": "2021-06-11 13:49:36",
      "valid_until": "2021-06-18 13:49:36",
      "time_to_send": "2021-06-11 13:52:00",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": false,
      "tags": [
        {
          "name": "Type",
          "value": "SMS:TEXT"
        }
      ],
      "status": "SUCCESS"
    }
  ]
}
}
	

Wie man SMS von Java mit der Java-SMS-API sendet (Video-Tutorial)

Dieses Video zeigt Ihnen, wie Sie ein neues Projekt in Apache NetBeans erstellen und es in SendScheduledSms umbenennen. Sobald die Lösung erstellt ist, werden Sie möglicherweise bemerken, dass sich im Projekt im Ordner Source Packages ein Ordner namens <default package> befindet. Hier erstellen oder fügen Sie die Main.java-Datei ein. Dann müssen Sie den Ozeki-Ordner in den Source Packages-Ordner einfügen, und das sind alle Vorbereitungen, die Sie benötigen, um eine SMS mit Java zu senden.

Video 1 - Wie man Ozeki.Libs.Rest herunterlädt und Ihr Projekt einrichtet (Video-Tutorial)

Java-Code zum Senden einer SMS an ein Mobiltelefon

Das Java-SMS-Codebeispiel unten zeigt, wie Sie SMS mit der HTTP-REST-SMS-API des Ozeki SMS Gateways unter Verwendung der Java Ozeki.Libs.Rest-Bibliothek senden können. Diese Bibliothek wird Ihnen kostenlos zur Verfügung gestellt, und Sie können sie in Ihren Projekten verwenden und modifizieren.

Main.java
import Ozeki.Libs.Rest.*;
import java.time.LocalDateTime;

public class Main {

    public static void main(String[] args) {

        var configuration = new Configuration();
        configuration.Username = "http_user";
        configuration.Password = "qwe123";
        configuration.ApiURL = "http://127.0.0.1:9509/api";

        var msg = new Message();
        msg.ToAddress = "+36201111111";
        msg.Text = "Hello world!";
        msg.TimeToSend = LocalDateTime.parse("2021-06-11T13:52:00");

        var api = new MessageApi(configuration);
        
        var result = api.Send(msg);
        
        System.out.println(result);
    }
}
	

Wie man das Java-SMS-Beispiel verwendet:

Sie können die Message-Klasse verwenden, um die SMS zu erstellen, und Sie können die MessageApi-Klasse verwenden, um die SMS an das SMS-Gateway zu senden. Das SMS-Gateway leitet Ihre Nachricht entweder über eine drahtlose Verbindung oder über das Internet an das Mobilfunknetz weiter.

Java-SMS-Beispiel: Main.java

Abbildung 3 - SendScheduledSms-Projekt

Wie man überprüft, ob die SMS vom HTTP-Benutzer akzeptiert wurde

Nachdem die SMS übermittelt wurde, ist es eine gute Idee, Ihr SMS-Gateway zu überprüfen, um zu sehen, was es empfangen hat. Sie können das Protokoll überprüfen, indem Sie die Details des HTTP-Benutzers in der Ozeki SMS Gateway Management-Konsole öffnen. Das folgende Video zeigt Ihnen, worauf Sie achten müssen.

Video 2 - Wie man eine geplante SMS mit dem Java-Code oben sendet (Video-Tutorial)

Fazit

Dieser Artikel gab einen Einblick in die SMS-Planung in Java mit dem Ozeki SMS Gateway. Wenn Sie Textnachrichten zu einem bestimmten Zeitpunkt versenden möchten, kann die SMS-Planung sehr hilfreich sein. Mit dieser Anleitung und dem obenstehenden Code erhalten Sie alle notwendigen Kenntnisse und Werkzeuge, um die SMS-Planung möglich zu machen. Der Ozeki SMS Gateway ermöglicht es Ihnen, Nachrichten in einer Datenbank zu protokollieren und bietet zahlreiche Berichtsfunktionen, um Ihnen so viele Informationen wie nötig über die SMS-Kommunikation zu liefern.

Setzen Sie Ihre Lektüre auf der Tutorial-Seite von Ozeki fort, wo Sie weitere Informationen zu Themen wie Empfangen in Java finden.

Das Einzige, was jetzt noch zu tun bleibt, ist, den Ozeki SMS Gateway herunterzuladen und loszulegen!

More information