SMS in Java empfangen
Die Anleitung auf dieser Seite gibt Ihnen eine kurze Einführung, wie Sie empfangene Nachrichten von der SMS Gateway in Ihre Java-Anwendung erhalten können. Diese Operation wird durch einen einfachen Java-Code demonstriert, der HTTP-Anfragen verwendet, um die eingehenden Nachrichten von der SMS Gateway zu sammeln. Wenn Sie dieser Anleitung folgen, werden Sie lernen, wie Sie eine Beispiel-Java-Anwendung erstellen können, die Nachrichten aus dem Posteingangsordner abruft, und Sie werden sehen, wie Sie die Lösung testen können. Also, lassen Sie uns beginnen.
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 der SMS Gateway über HTTP-Anfragen, die die Nachricht senden und mit einer Antwortnachricht zurückkehren.
Voraussetzungen
- Installierte Apache NetBeans IDE 12.0
- Installierte Ozeki 10 SMS Gateway
- Eine konfigurierte HTTP-Server-Verbindung
- Öffnen Sie Apache NetBeans IDE
- Erstellen Sie eine neue Java-Anwendung
- Erstellen Sie eine neue Java-Klasse
- Kopieren Sie den Beispiel-Quellcode unten und fügen Sie ihn ein
- Geben Sie 'https://localhost:9515' in Ihren Browser ein, um das SMS-Gateway zu öffnen
- Wählen Sie HTTP-Server-Verbindung und öffnen Sie das HTML-Formular
- Senden Sie einige Testnachrichten
- Führen Sie die Java-Anwendung aus, um die Nachrichten zu erhalten
Der untenstehende Java-SMS-Beispielcode, der eingehende Nachrichten vom SMS-Gateway abrufen kann, ist kostenlos nutzbar. Sie können ihn modifizieren oder in Ihrem Projekt verwenden. Wenn Sie die Lösung nur testen möchten, müssen Sie die Schritt-für-Schritt-Anleitung unten befolgen oder Sie können sich auch das obenstehende Video ansehen, um zu lernen, wie Sie die Beispiel-Java-Anwendung erstellen können, die eingehende Nachrichten vom SMS-Gateway abruft.
package ozeki; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.security.GeneralSecurityException; import java.security.cert.X509Certificate; import java.util.stream.Collectors; 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; import javax.xml.parsers.*; import org.xml.sax.InputSource; import org.w3c.dom.*; import java.io.*; public class ReceiveSMS { 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 httpUrl = "https://127.0.0.1:9508/"; String folder = "inbox"; String limit = "3"; sendString.append(httpUrl).append("api?action=receivemessage&username="). append(username).append("&password="). append(password).append("&folder=").append(folder). append("&limit=").append(limit).append("&afterdownload=delete"); 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 response = br.lines().collect(Collectors.joining("\n")); response = response.substring(response.indexOf('\n')+1); response = response.substring(response.indexOf('\n')+1); DisplayMessages(response); } else { br = new BufferedReader(new InputStreamReader(con.getErrorStream())); String response = br.lines().collect(Collectors.joining("\n")); System.out.println(response); } } catch (IOException ex) { System.out.println(ex.getMessage()); } } static void DisplayMessages(String response) { try{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(response)); Document doc = db.parse(is); NodeList nodes = doc.getElementsByTagName("message"); for (int i = 0; i < nodes.getLength(); i++) { Element element = (Element) nodes.item(i); NodeList originator = element.getElementsByTagName("originator"); Element line = (Element) originator.item(0); String sender = getCharacterDataFromElement(line); NodeList messagedata = element.getElementsByTagName("messagedata"); line = (Element) messagedata.item(0); String text = getCharacterDataFromElement(line); DisplayMessage(sender, text); } } catch (Exception ex) { System.out.println("The inbox is empty"); } } public static void DisplayMessage(String sender, String text) { System.out.println(sender + ": "+ text); } public static String getCharacterDataFromElement(Element e) { Node child = e.getFirstChild(); if (child instanceof CharacterData) { CharacterData cd = (CharacterData) child; return cd.getData(); } return "?"; } }
Schritt 1 - Apache NetBeans IDE öffnen
Um eine Java-Anwendung erstellen zu können, benötigen Sie eine Anwendung, die dazu in der Lage ist. Eine dieser Anwendungen ist die Apache NetBeans IDE, die im Abschnitt "Voraussetzungen" oben heruntergeladen werden kann. Falls Sie diese IDE bereits installiert haben, müssen Sie sie nur noch von Ihrem Desktop aus öffnen, wie in Abbildung 1 zu sehen ist.
Schritt 2 - Eine neue Java-Anwendung erstellen
Nachdem Sie Apache NetBeans IDE geöffnet haben, ist das erste, was Sie tun müssen, eine Java-Anwendung zu erstellen. Wählen Sie dazu die Option "Neues Projekt..." aus der Symbolleiste. Durch diese Aktion öffnet sich ein Fenster, das alle verfügbaren Projekte anzeigt, die in Apache NetBeans erstellt werden können. Wählen Sie hier die Option "Java-Anwendung" wie in Abbildung 2 und klicken Sie abschließend auf "Weiter".
Schritt 3 - Die Java-Anwendung konfigurieren
Bevor Sie die Java-Anwendung erstellen, müssen Sie einige Konfigurationen vornehmen. In diesem Menü müssen Sie einen Namen für das Projekt festlegen, Sie können auch einen Speicherort für das Projekt auswählen. Der Name des Pakets kann hier ebenfalls angegeben werden. Wenn Sie alle Konfigurationen abgeschlossen haben, klicken Sie einfach auf "Fertig stellen", wie in Abbildung 3 gezeigt.
Schritt 4 - Eine Java-Klasse erstellen
Nachdem Sie die Java-Anwendung erstellt haben, müssen Sie eine Java-Klasse erstellen, da diese zu diesem Zeitpunkt noch keine Klasse enthält. Klicken Sie dazu mit der rechten Maustaste auf das Paket, wählen Sie "Neu" und klicken Sie, wie in Abbildung 4 gezeigt, auf "Java-Klasse...". Dann müssen Sie einen Namen für die Java-Klasse festlegen und, wenn Sie fertig sind, einfach auf "Erstellen" klicken.
Schritt 5 - Den Java-Code von dieser Seite ersetzen
An diesem Punkt haben Sie die Java-Anwendung, die Sie benötigen, aber sie enthält nicht den richtigen Code. Um dies zu beheben, müssen Sie den ursprünglichen Code durch den Beispielcode von dieser Seite ersetzen. Gehen Sie also einfach zum Beispielcode und kopieren Sie ihn mit der Tastenkombination Strg+C in Ihre Zwischenablage. Gehen Sie dann zur erstellten Java-Klasse, löschen Sie zunächst den vorhandenen Code und drücken Sie Strg+V, um den Beispielcode in die Java-Klasse einzufügen, wie in Abbildung 5 zu sehen ist.
Schritt 6 - Testnachrichten senden
Bevor Sie die Beispiel-Java-Anwendung ausführen, benötigen Sie einige eingehende Nachrichten, die von der Anwendung gesammelt werden können. Die SMS Gateway bietet Ihnen die Möglichkeit, eingehende Nachrichten zu simulieren, damit Sie Ihre Lösung testen können. Öffnen Sie dazu einfach das SMS Gateway und wählen Sie die HTTP-Server-Verbindung aus. Falls Sie keine HTTP-Server-Verbindung haben, lesen Sie wie Sie eine HTTP-Server-Verbindung erstellen. Öffnen Sie hier das HTML-Formular dieser Verbindung und senden Sie, wie in Abbildung 6 gezeigt, einige Testnachrichten.
Schritt 7 - Die Java-Anwendung ausführen
Der letzte Schritt dieser Anleitung ist das Ausführen der Java-Anwendung. Dies ist eine einfache Operation; alles, was Sie tun müssen, ist, wie in Abbildung 7 gezeigt, auf die Schaltfläche "Ausführen" in Apache NetBeans zu klicken. Diese Aktion führt den Beispiel-Java-Code aus, der die HTTP-Anfrage, die an das SMS Gateway gesendet wurde, ausgibt und dann auch die Antwort des SMS Gateways, die alle eingehenden Nachrichten enthält.
Zusammenfassend
Diese Anleitung, die Sie gerade gelesen haben, gibt Ihnen Informationen darüber, wie Sie SMS-Nachrichten vom SMS Gateway mit einer Java-Anwendung empfangen können. Mit unserer Java SMS API können Sie die Ressourcen der Java-Sprache nutzen und damit das SMS Gateway steuern. Die Java API in Kombination mit dem Ozeki SMS Gateway ergibt ein leistungsstarkes SMS-Versandsystem, das bis zu 1000 SMS pro Sekunde senden kann.
Wenn Sie mehr über die Vorteile anderer ähnlicher API-Lösungen erfahren möchten, besuchen Sie unsere Seite über Python zur Verwaltung des SMS-Verkehrs.
Wenn Sie E-Mail-zu-SMS-Weiterleitung benötigen und dies noch nicht getan haben, laden Sie das Ozeki SMS Gateway jetzt herunter und richten Sie dies ein!