Přijímání SMS v Javě
Tento průvodce vám poskytne stručný úvod do toho, jak můžete získat přijaté zprávy z SMS Gateway do vaší Java aplikace. Tato operace je demonstrována jednoduchým Java kódem, který využívá HTTP požadavky ke sběru příchozích zpráv z SMS Gateway. Pokud budete postupovat podle tohoto průvodce, naučíte se, jak vytvořit ukázkovou Java aplikaci, která získává zprávy ze složky doručené pošty, a uvidíte, jak otestovat řešení. Takže pojďme začít.
Co je Java SMS API?
Java SMS API vám umožňuje implementovat SMS služby do vaší Java aplikace. API komunikuje s SMS Gateway pomocí HTTP požadavků, které odesílají zprávu a vracejí odpověď.
Předpoklady
- Nainstalované Apache NetBeans IDE 12.0
- Nainstalovaný Ozeki 10 SMS Gateway
- Nakonfigurované HTTP Server připojení
- Otevřete Apache NetBeans IDE
- Vytvořte novou Java aplikaci
- Vytvořte novou třídu v Javě
- Zkopírujte a vložte ukázkový zdrojový kód níže
- Do prohlížeče zadejte 'https://localhost:9515' pro otevření SMS Gateway
- Vyberte připojení HTTP Server a otevřete jeho HTML formulář
- Odešlete nějaké testovací zprávy
- Spusťte Java aplikaci pro získání zpráv
Níže uvedený ukázkový kód v Javě, který umožňuje přijímat příchozí zprávy z SMS Gateway, je volně k použití. Můžete jej upravit nebo použít ve svém projektu. Pokud chcete pouze otestovat řešení, postupujte podle níže uvedených kroků nebo se můžete podívat na výše uvedené video, abyste se naučili, jak vytvořit ukázkovou Java aplikaci, která umí přijímat příchozí zprávy z SMS Gateway.
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 "?"; } }
Krok 1 – Otevřete Apache NetBeans IDE
Abyste mohli vytvořit Java aplikaci, potřebujete mít aplikaci, která to umožňuje. Jednou z těchto aplikací je Apache NetBeans IDE, který lze stáhnout v sekci Předpoklady výše. Pokud již tento IDE máte, stačí jej otevřít z plochy, jak vidíte na Obrázku 1.
Krok 2 – Vytvořte novou Java aplikaci
Po otevření Apache NetBeans IDE je první věc, kterou musíte udělat, vytvořit Java aplikaci. Pro tento účel vyberte možnost 'Nový projekt...' z panelu nástrojů. Tím se otevře okno, které obsahuje všechny dostupné projekty, které lze v Apache NetBeans vytvořit. Zde vyberte možnost Java aplikace, jak je znázorněno na Obrázku 2, a nakonec klikněte na 'Další'.
Krok 3 – Nakonfigurujte Java aplikaci
Před vytvořením Java aplikace je třeba provést některé konfigurace. V tomto menu musíte zadat název projektu, můžete také vybrat umístění projektu. Zde lze také určit název balíčku. Pokud jste dokončili všechny konfigurace, jednoduše klikněte na 'Dokončit', jak je znázorněno na Obrázku 3.
Krok 4 – Vytvořte Java třídu
Po vytvoření Java aplikace musíte vytvořit Java třídu, protože v tomto okamžiku ještě neobsahuje žádnou třídu. Pro tento účel klikněte pravým tlačítkem na balíček, vyberte 'Nový' a jak ukazuje Obrázek 4, klikněte na 'Java třída...'. Poté je třeba zadat název Java třídy a po dokončení klikněte na 'Vytvořit'.
Krok 5 – Nahraďte Java kód z této stránky
V tomto okamžiku máte potřebnou Java aplikaci, ale neobsahuje správný kód. Chcete-li to opravit, musíte původní kód nahradit příkladovým kódem z této stránky. Přejděte tedy k příkladovému kódu a zkopírujte jej do schránky pomocí klávesové zkratky Ctrl+C. Poté přejděte k vytvořené Java třídě, nejprve odstraňte kód, který zde najdete. Poté stiskněte Ctrl+V a vložte příkladový kód do Java třídy, jak vidíte na Obrázku 5.
Krok 6 – Odešlete testovací zprávy
Před spuštěním příkladové Java aplikace je třeba mít nějaké příchozí zprávy, které může aplikace shromažďovat. SMS Gateway vám poskytuje možnost simulovat příchozí zprávy, abyste mohli otestovat své řešení. Pro tento účel otevřete SMS Gateway a vyberte připojení HTTP Server. Pokud nemáte připojení HTTP Server, podívejte se na jak vytvořit připojení HTTP Server. Zde otevřete HTML formulář tohoto připojení a, jak ukazuje Obrázek 6, odešlete nějaké testovací zprávy.
Krok 7 – Spusťte Java aplikaci
Posledním krokem tohoto průvodce je spuštění Java aplikace. Jedná se o jednoduchou operaci; vše, co musíte udělat, je kliknout na tlačítko 'Spustit' v Apache NetBeans, jak vidíte na Obrázku 7. Tato akce spustí příkladový Java kód, který vytiskne HTTP požadavek odeslaný do SMS Gateway, a poté také vytiskne odpověď od SMS Gateway, která obsahuje všechny příchozí zprávy.
Shrnutí
Tento průvodce, který jste právě četli, vám poskytuje informace o tom, jak přijímat SMS zprávy z SMS Gateway pomocí Java aplikace. Pomocí naší Java SMS API můžete využít zdroje jazyka Java a použít je k ovládání SMS Gateway. Java API v kombinaci s Ozeki SMS Gateway vytvoří výkonný systém pro odesílání SMS schopný odeslat až 1000 SMS za sekundu.
Pokud byste se chtěli dozvědět více užitečných informací o výhodách dalších podobných API řešení, navštivte naši stránku o Pythonu pro správu SMS provozu.
Pokud potřebujete přeposílání e-mailů na SMS a ještě jste tak neučinili, stáhněte si Ozeki SMS Gateway nyní a vytvořte toto nastavení!