Kako poslati SMS iz Jave

Sledeći primer konzolne aplikacije napisane u programskom jeziku Java pokazaće vam način na koji možete slati HTTP zahteve ka SMS Gateway-u i dobiti odgovor. Ovi HTTP zahtevi se mogu koristiti za slanje SMS poruka i lako možete konfigurisati detalje SMS poruke modifikovanjem promenljivih koje sadrže sve informacije u vezi sa SMS porukom.

Šta je Java SMS API?

Java SMS API vam omogućava da implementirate SMS usluge u vašu Java aplikaciju. API komunicira sa SMS Gateway-om koristeći HTTP zahteve koji šalju poruku i vraćaju odgovor.

Preduslovi Slanje SMS-a iz Jave
  • Otvorite Apache NetBeans IDE
  • Kliknite na 'New project...'
  • Napravite novu Java aplikaciju
  • Nazovite projekat i paket
  • Napravite novu Java klasu
  • Kopirajte i nalepite primer izvornog koda ispod
  • Pokrenite Java aplikaciju
  • Izaberite glavnu klasu ako je potrebno

Video 1 - Kako poslati SMS iz JAVE (Video tutorijal)

Primer Java SMS izvornog koda

Sledeći primer izvornog koda napisan u programskom jeziku Java je slobodan za korišćenje, možete ga jednostavno implementirati u vaš projekat, ili možete modifikovati izvorni kod da ga koristite za druge projekte ili aplikacije. Ako želite da pokrenete ovaj primer, samo treba da napravite novu Java aplikaciju sa jednom Java klasom i pokrenete projekat kao što možete videti u koracima i videu iznad.

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

Корак 1 - Отворите Apache NetBeans IDE

Први корак у креирању Java апликације која може да шаље SMS поруке је да отворите Apache NetBeans IDE на свом рачунару. Apache NetBeans пружа уређиваче, чаробњаке и шаблоне који ће вам помоћи да креирате апликације у Java, PHP и многим другим језицима. Ако још нисте преузели Apache NetBeans, можете га преузети из одељка Претпоставке. Након што га инсталирате, једноставно га отворите са радне површине као на Слици 1.

open apache netbeans ide
Слика 1 - Отворите Apache NetBeans IDE

Корак 2 - Направите нови Java пројекат

Након што отворите Apache NetBeans IDE, отвориће се главни прозор. Овде можете креирати Java апликацију потребну за слање SMS порука. За то, као што можете видети на Слици 2, кликните на 'File' у траци са алаткама, а затим изаберите опцију 'New project...'.

create new java project
Слика 2 - Направите нови Java пројекат

Корак 3 - Изаберите Java апликацију

Затим се појављује нови прозор који садржи све типове пројеката који се могу креирати у Apache NetBeans. Овде можете креирати једноставну Java апликацију или изабрати неки од напреднијих типова пројеката. За овај пример можете користити једноставну Java апликацију, па је изаберите са листе и, као на Слици 3, кликните Next.

select java application project type
Слика 3 - Изаберите тип Java апликације

Корак 4 - Подесите Java апликацију

У следећем кораку, потребно је извршити основну конфигурацију Java апликације. Као што можете видети на Слици 4, можете дати име пројекту. Такође можете поставити локацију пројекта и на крају можете одредити име за пакет. Ако сте завршили са подешавањима, једноставно кликните на Finish.

choose project name and package
Слика 4 - Изаберите име пројекта и пакет

Корак 5 - Направите нову Java класу

Направљени Java пројекат је празан, тако да не садржи ниједан фајл са изворним кодом, па је потребно да га креирате. За то, изаберите пакет вашег пројекта и кликните десним тастером миша. Из искачућег прозора, као што Слика 5 показује, изаберите New, а затим кликните на 'Java class...' да бисте креирали нову Java класу у вашој апликацији.

create new class
Слика 5 - Направите нову класу

Корак 6 - Подесите Java класу

Пре него што завршите креирање Java класе, потребно је да одредите име за класу. То се лако може урадити као што Слика 6 показује. Након што сте дали одговарајуће име за Java класу, једноставно кликните на дугме Finish да бисте успешно креирали Java класу.

give the new class a name
Слика 6 - Дајте име новој класи

Корак 7 - Налепите изворни код

Следећа ствар коју треба да урадите је да поставите пример кода у вашу Java апликацију. За то, једноставно се померите до примера кода, копирајте цео изворни код у clipboard и налепите га у вашу новокреирану Java класу. У овом тренутку, можете покренути Java апликацију, па једноставно кликните на дугме Run у траци са алаткама. При првом покретању, као што Слика 7 показује, потребно је да изаберете главну класу за извршавање. Дакле, изаберите класу HttpApiTester и кликните на 'Select Main class'.

paste code from website then select main class
Слика 7 - Налепите код са веб странице, затим изаберите главну класу

Корак 8 - Погледајте резултат апликације

Ако сте све урадили како треба до овог тренутка, апликација ће се покренути и моћи ћете да видите резултат у прозору конзоле као што Слика 8 показује. Овај прозор исписује HTTP захтев који је покренут и послат SMS Gateway-у, а такође исписује и одговор од SMS Gateway-а који указује на то да ли је испорука SMS поруке била успешна или не.

the program starts and the result is displayed
Слика 8 - Програм се покреће и приказује резултат

Корак 9 - Проверите резултат слања у Ozeki лог-у

У Ozeki 10 SMS Gateway-у, можете пратити које поруке је послала ваша апликација, јер HTTP API сервис бележи сваки догађај који се десио док је активиран. Дакле, након што отворите SMS Gateway и изаберете детаље HTTP API сервиса, моћи ћете да видите догађаје. Као што Слика 9 показује, сервис је забележио догађај када је пример Java апликације послао HTTP захтев сервису.

проверите логове HTTP API сервиса
Слика 9 - Проверите логове HTTP API сервиса

Начин на који SMS Gateway обрађује поруке такође се може видети кроз догађаје. За то, отворите HTTP API корисничку везу, коју сте морали да конфигуришете раније. Слика 10 показује како веза обрађује HTTP захтев и шаље поруку примаоцу које сте навели у вашој Java апликацији.

проверите логове HTTP API корисника
Слика 10 - Проверите логове HTTP API корисника

Резиме

Из овог чланка сте научили како да шаљете SMS из Java-е. То значи да можете имплементирати SMS услуге у ваше Java апликације. Основа овог решења је Ozeki SMS Gateway. То значи да нећете имати проблема са перформансама или кашњењем у слању SMS-ова. На овај начин ваша Java решења могу задовољити више потреба купаца и биће универзална. Такође ће омогућити да информације теку брже и лакше.

Да бисте боље разумели цео систем, слободно погледајте Ozeki туторијалне странице о примању SMS-ова у Java-и, или покушајте да имплементирате SMS услуге у другим пројектима. На пример, користите HTTP SMS API са PHP-ом.

Следећа ствар коју треба да урадите је да преузмете Ozeki SMS Gateway и почнете са развојем одмах!

More information