Prijímať SMS v Jave

Tento sprievodca vám poskytne stručný úvod o tom, ako môžete získať prijaté správy z SMS Gateway do vašej Java aplikácie. Táto operácia je demonštrovaná jednoduchým Java kódom, ktorý používa HTTP požiadavky na zber prichádzajúcich správ z SMS Gateway. Ak budete postupovať podľa tohto sprievodcu, naučíte sa, ako vytvoriť ukážkovú Java aplikáciu, ktorá získava správy z priečinka doručenej pošty, a uvidíte, ako otestovať riešenie. Takže, poďme na to.

Čo je Java SMS API?

Java SMS API vám umožňuje implementovať SMS služby do vašej Java aplikácie. API komunikuje so SMS Gateway pomocou HTTP požiadaviek, ktoré odosielajú správu a vracajú odpoveď.

Predpoklady

Prijímať SMS v Jave

  1. Otvorte Apache NetBeans IDE
  2. Vytvorte novú Java aplikáciu
  3. Vytvorte novú Java triedu
  4. Skopírujte a vložte príklad zdrojového kódu nižšie
  5. Do prehliadača zadajte 'https://localhost:9515' pre otvorenie SMS Gateway
  6. Vyberte HTTP Server spojenie a otvorte jeho HTML formulár
  7. Odošlite nejaké testovacie správy
  8. Spustite Java aplikáciu na prijatie správ

Video 1 - Ako prijímať SMS v Jave (Video návod)

Príklad Java kódu na prijímanie SMS správ z SMS Gateway je voľne použiteľný, môžete ho upraviť alebo použiť vo svojom projekte. Ak chcete len otestovať riešenie, postupujte podľa krokov nižšie alebo si môžete pozrieť video vyššie, aby ste sa naučili, ako vytvoriť príklad Java aplikácie, ktorá dokáže prijímať sprá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 - Otvorte Apache NetBeans IDE

Ak chcete vytvoriť aplikáciu v jazyku Java, potrebujete mať aplikáciu, ktorá to dokáže. Jednou z takýchto aplikácií je Apache NetBeans IDE, ktorú si môžete stiahnuť z časti Predpoklady vyššie. Ak už túto IDE máte, stačí ju otvoriť z pracovnej plochy, ako môžete vidieť na obrázku 1.

otvoriť netbeans
Obrázok 1 - Otvorenie Apache NetBeans

Krok 2 - Vytvorte novú aplikáciu v jazyku Java

Po otvorení Apache NetBeans IDE je prvou vecou, ktorú musíte urobiť, vytvorenie aplikácie v jazyku Java. Preto vyberte možnosť 'Nový projekt...' z panela nástrojov. Touto akciou sa zobrazí okno, ktoré obsahuje všetky dostupné projekty, ktoré je možné vytvoriť v Apache NetBeans. Tu vyberte možnosť Java aplikácia ako na obrázku 2 a nakoniec kliknite na 'Ďalej'.

vytvoriť nový projekt
Obrázok 2 - Vytvorenie nového projektu Java aplikácie

Krok 3 - Nakonfigurujte aplikáciu v jazyku Java

Pred vytvorením aplikácie v jazyku Java je potrebné vykonať nejaké konfigurácie. V tomto menu musíte zadať názov projektu, môžete tiež vybrať umiestnenie projektu. Tu môžete zadať aj názov balíka. Ak ste dokončili všetky konfigurácie, kliknite na 'Dokončiť' ako na obrázku 3.

konfigurovať projekt
Obrázok 3 - Konfigurácia názvu projektu a balíka

Krok 4 - Vytvorte triedu v jazyku Java

Po vytvorení aplikácie v jazyku Java musíte vytvoriť triedu v jazyku Java, pretože v tomto okamihu ešte neobsahuje žiadnu triedu. Preto kliknite pravým tlačidlom myši na balík, potom vyberte 'Nový' a ako ukazuje obrázok 4, kliknite na 'Trieda v jazyku Java...'. Potom musíte zadať názov pre triedu v jazyku Java a ak ste hotoví, kliknite na 'Vytvoriť'.

vytvoriť novú triedu v jazyku Java
Obrázok 4 - Vytvorenie novej triedy v jazyku Java

Krok 5 - Nahraďte kód v jazyku Java z tejto stránky

V tomto okamihu máte aplikáciu v jazyku Java, ktorú potrebujete, ale neobsahuje správny kód. Aby ste to opravili, musíte nahradiť pôvodný kód príkladovým kódom z tejto stránky. Prejdite na príkladový kód a skopírujte ho do schránky pomocou klávesovej skratky Ctrl+C. Potom prejdite do vytvorenej triedy v jazyku Java a najprv odstráňte kód, ktorý tu nájdete. Potom stlačte Ctrl+V a vložte príkladový kód do triedy v jazyku Java, ako môžete vidieť na obrázku 5.

nahradiť kód v jazyku Java
Obrázok 5 - Nahradenie kódu v jazyku Java zo stránky

Krok 6 - Odošlite niekoľko testovacích správ

Pred spustením príkladovej aplikácie v jazyku Java musíte mať niekoľko prichádzajúcich správ, ktoré môže aplikácia zhromaždiť. SMS Gateway vám poskytuje možnosť simulovať prichádzajúce správy, aby ste mohli otestovať svoje riešenie. Preto jednoducho otvorte SMS Gateway a vyberte pripojenie HTTP Server. Ak nemáte pripojenie HTTP Server, pozrite si ako vytvoriť pripojenie HTTP Server. Tu otvorte HTML formulár tohto pripojenia a ako na obrázku 6 odošlite niekoľko testovacích správ.

simulovať prichádzajúce SMS
Obrázok 6 - Simulácia prichádzajúcich SMS

Krok 7 - Spustite aplikáciu v jazyku Java

Posledným krokom tohto návodu je spustenie aplikácie v jazyku Java. Toto je jednoduchá operácia; všetko, čo musíte urobiť, je kliknúť na tlačidlo 'Spustiť' v Apache NetBeans ako na obrázku 7. Táto akcia spustí príkladový kód v jazyku Java, ktorý vytlačí HTTP požiadavku odoslanú do SMS Gateway, a potom vytlačí aj odpoveď od SMS Gateway, ktorá obsahuje všetky prichádzajúce správy.

spustiť kód v jazyku Java
Obrázok 7 - Spustenie kódu v jazyku Java v NetBeans na prijímanie SMS

Zhrnutie

Tento návod, ktorý ste práve prečítali, vám poskytuje informácie o tom, ako prijímať SMS správy z SMS Gateway pomocou aplikácie v jazyku Java. Pomocou nášho rozhrania Java SMS API môžete využiť zdroje jazyka Java a použiť ho na ovládanie SMS Gateway. Rozhranie Java API v kombinácii s Ozeki SMS Gateway vytvorí výkonný systém na odosielanie SMS schopný odosielať až 1000 SMS za sekundu.

Ak by ste sa chceli dozvedieť viac užitočných informácií o výhodách iných podobných riešení API, navštívte našu stránku o použití Pythonu na správu SMS prevádzky.

Ak potrebujete preposielanie e-mailov na SMS a ešte ste to neurobili, stiahnite si Ozeki SMS Gateway teraz a vytvorte toto nastavenie!