Jak odeslat SMS z Javy

Následující příklad konzolové aplikace napsané v programovacím jazyce Java vám ukáže způsob, jak můžete odesílat HTTP požadavky na SMS bránu a také získat odpověď. Tyto HTTP požadavky lze použít pro odesílání SMS zpráv a můžete snadno upravit detaily SMS zprávy změnou proměnných, které obsahují všechny informace týkající se SMS zprávy.

Co je Java SMS API?

Java SMS API vám umožňuje implementovat SMS služby do vaší Java aplikace. API komunikuje s SMS bránou pomocí HTTP požadavků, které odesílají zprávu a vracejí odpověď.

Předpoklady

Odeslání SMS z Javy

  • Otevřete Apache NetBeans IDE
  • Klikněte na 'New project...'
  • Vytvořte novou Java aplikaci
  • Pojmenujte projekt a balíček
  • Vytvořte novou třídu v Javě
  • Zkopírujte a vložte níže uvedený příklad zdrojového kódu
  • Spusťte Java aplikaci
  • V případě potřeby vyberte hlavní třídu

Video 1 - Jak odeslat SMS z Javy (Návodové video)

Příklad zdrojového kódu pro SMS v Javě

Následující příklad zdrojového kódu napsaný v programovacím jazyce Java je volně k použití, můžete jej jednoduše implementovat do svého projektu nebo upravit zdrojový kód pro použití v jiných projektech nebo aplikacích. Pokud chcete tento příklad spustit, stačí vytvořit novou Java aplikaci s jednou třídou a spustit projekt, jak je vidět v návodu kroků a ve výše uvedeném videu.

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

Krok 1 – Otevřete Apache NetBeans IDE

Prvním krokem k vytvoření Java aplikace, která umí odesílat SMS zprávy, je otevření Apache NetBeans IDE ve vašem počítači. Apache NetBeans poskytuje editory, průvodce a šablony, které vám pomohou vytvářet aplikace v Javě, PHP a mnoha dalších jazycích. Pokud jste Apache NetBeans ještě nestáhli, můžete si jej stáhnout v sekci Předpoklady. Po instalaci jej stačí otevřít z plochy, jak ukazuje obrázek 1.

otevřete Apache NetBeans IDE
Obrázek 1 – Otevřete Apache NetBeans IDE

Krok 2 – Vytvořte nový Java projekt

Po otevření Apache NetBeans IDE se zobrazí hlavní okno. Zde můžete vytvořit Java aplikaci potřebnou k odesílání SMS zpráv. Jak vidíte na obrázku 2, klikněte na panelu nástrojů na „Soubor“ a zde vyberte možnost „Nový projekt...“.

vytvořte nový java projekt
Obrázek 2 – Vytvořte nový Java projekt

Krok 3 – Vyberte Java aplikaci

Dále se objeví nové okno obsahující všechny typy projektů, které lze v Apache NetBeans vytvořit. Zde můžete vytvořit jednoduchou Java aplikaci nebo vybrat z pokročilejších typů projektů. Pro tento příklad můžete použít jednoduchou Java aplikaci, takže ji vyberte ze seznamu a jako na obrázku 3 klikněte na Další.

vyberte typ projektu java aplikace
Obrázek 3 – Vyberte typ projektu Java aplikace

Krok 4 – Nakonfigurujte Java aplikaci

V dalším kroku je třeba provést základní konfiguraci Java aplikace. Jak vidíte na obrázku 4, můžete zadat název projektu. Můžete také nastavit umístění projektu a nakonec můžete určit i název balíčku. Po dokončení konfigurace klikněte na Dokončit.

zvolte název projektu a balíčku
Obrázek 4 – Zvolte název projektu a balíčku

Krok 5 – Vytvořte novou Java třídu

Vytvořený projekt Java aplikace je prázdný, takže neobsahuje žádný soubor se zdrojovým kódem, proto je třeba jej vytvořit. Za tímto účelem vyberte balíček vašeho projektu a klikněte pravým tlačítkem myši. Z rozbalovacího okna, jak ukazuje obrázek 5, vyberte Nový a poté klikněte na „Java třída...“ pro vytvoření nové Java třídy ve vaší aplikaci.

vytvořte novou třídu
Obrázek 5 – Vytvořte novou třídu

Krok 6 – Nakonfigurujte Java třídu

Před dokončením vytváření Java třídy je třeba zadat název třídy. To lze snadno provést, jak ukazuje obrázek 6. Po zadání správného názvu Java třídy klikněte na tlačítko Dokončit pro úspěšné vytvoření Java třídy.

zadejte název nové třídy
Obrázek 6 – Zadejte název nové třídy

Krok 7 – Vložte zdrojový kód

Další věc, kterou je třeba udělat, je vložení ukázkového kódu do vaší Java aplikace. Za tímto účelem přejděte nahoru k ukázkovému kódu, zkopírujte celý zdrojový kód do schránky a vložte jej do nově vytvořené Java třídy. V tomto okamžiku můžete spustit Java aplikaci, takže klikněte na tlačítko Spustit na panelu nástrojů. Při prvním spuštění, jak ukazuje obrázek 7, je třeba vybrat hlavní třídu pro spuštění. Vyberte tedy třídu HttpApiTester a klikněte na „Vybrat hlavní třídu“.

vložte kód z webu a pak vyberte hlavní třídu
Obrázek 7 – Vložte kód z webu a pak vyberte hlavní třídu

Krok 8 – Podívejte se na výsledek aplikace

Pokud jste vše udělali správně, aplikace se spustí a výsledek uvidíte v okně konzoly, jak ukazuje obrázek 8. Toto okno zobrazuje HTTP požadavek, který byl odeslán do SMS brány, a také odpověď od SMS brány, která indikuje, zda bylo doručení SMS zprávy úspěšné.

program se spustí a zobrazí výsledek
Obrázek 8 – Program se spustí a zobrazí výsledek

Krok 9 - Zkontrolujte výsledek odeslání v Ozeki logu

V Ozeki 10 SMS Gateway můžete sledovat, jaké zprávy byly odeslány vaší aplikací, protože služba HTTP API zaznamenává každou událost, která nastane během jejího provozu. Po otevření SMS Gateway a výběru detailů služby HTTP API uvidíte všechny události. Jak ukazuje obrázek 9, služba zaznamenala událost, když příkladová Java aplikace odeslala HTTP požadavek na službu.

zkontrolujte logy služby http api
Obrázek 9 - Zkontrolujte logy služby HTTP API

Způsob, jakým SMS Gateway zpracovává zprávy, lze také zobrazit prostřednictvím událostí. Pro to otevřete připojení HTTP API User, které jste museli předtím nakonfigurovat. Obrázek 10 ukazuje, jak připojení zpracovává HTTP požadavek a odesílá zprávu příjemci, kterého jste zadali ve své Java aplikaci.

zkontrolujte logy uživatele http api
Obrázek 10 - Zkontrolujte logy uživatele HTTP API

Shrnutí

V tomto článku jste se naučili, jak odesílat SMS z Javy. To znamená, že můžete implementovat SMS služby do svých Java aplikací. Základem tohoto řešení je Ozeki SMS Gateway. To znamená, že nebudete mít problémy s výkonem ani žádné zpoždění při odesílání SMS. Tímto způsobem mohou vaše Java řešení splňovat více potřeb zákazníků a budou univerzálnější. Také umožní rychlejší a snadnější tok informací.

Pro lepší pochopení celého systému si projděte výukové stránky Ozeki o příjmu SMS v Javě, nebo zkuste implementovat SMS služby do dalších projektů. Například, použijte HTTP SMS API s PHP.

Dalším krokem je stáhnout Ozeki SMS Gateway a začít s vývojem hned teď!

More information