Primanje SMS-a u Javi

Vodič na ovoj stranici će vam pružiti kratak uvod u to kako možete dobijati primljene poruke sa SMS Gateway-a u vašu Java aplikaciju. Ova operacija je prikazana kroz jednostavan Java kod koji koristi HTTP zahteve za prikupljanje dolaznih poruka sa SMS Gateway-a. Ako pratite ovaj vodič, naučićete kako možete kreirati primer Java aplikacije koja dobija poruke iz inbox foldera i moći ćete da vidite kako testirati rešenje. Dakle, počnimo.

Š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

Примите SMS у Јави

  1. Отворите Apache NetBeans IDE
  2. Направите нову Јава апликацију
  3. Направите нову Јава класу
  4. Копирајте и налепите пример изворног кода испод
  5. Укуцајте 'https://localhost:9515' у свој прегледач да отворите SMS Gateway
  6. Изаберите HTTP Server конекцију и отворите његов HTML формулар
  7. Пошаљите неке тест поруке
  8. Покрените Јава апликацију да примите поруке

Видео 1 - Како примити SMS у Јави (Видео туторијал)

Пример Јава кода за примање SMS порука испод је бесплатан за употребу, можете га модификовати или користити у свом пројекту. Ако желите само да тестирате решење, потребно је да пратите корак-по-корак упутства испод или можете погледати видео изнад да научите како да направите пример Јава апликације која може да прима долазне поруке са 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 "?";
      }
}

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

Да бисте могли да креирате Java апликацију, потребан вам је програм који то омогућава. Један од таквих програма је Apache NetBeans IDE који можете преузети из одељка Претпоставке изнад. Ако већ имате овај IDE, једноставно га отворите са радне површине као што је приказано на Слици 1.

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

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

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

направи нови пројекат
Слика 2 - Направите нови Java Application пројекат

Корак 3 - Конфигуришите Java апликацију

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

конфигуриши пројекат
Слика 3 - Конфигуришите име пројекта и пакета

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

Након што сте креирали Java апликацију, морате да креирате Java класу јер у овом тренутку она још увек не садржи ниједну класу. За то, десним кликом изаберите пакет, затим 'New', и као што је приказано на Слици 4, кликните на 'Java class...'. Затим, морате да одредите име за Java класу и ако сте завршили, једноставно кликните на 'Create'.

направи нову java класу
Слика 4 - Направите нову Java класу

Корак 5 - Замените Java код са ове странице

У овом тренутку, имате Java апликацију која вам је потребна, али она не садржи исправан код. Да бисте то исправили, потребно је да замените оригинални код са примером кода са ове странице. Дакле, идите до пример кода, и копирајте га у clipboard користећи пречицу Ctrl+C. Затим, идите до креиране Java класе, и прво избришите код који се налази овде. Након тога, притисните Ctrl+V да бисте налепили пример кода у Java класу као што је приказано на Слици 5.

замени java код
Слика 5 - Замените java код са веб странице

Корак 6 - Пошаљите неке тест поруке

Пре покретања примера Java апликације, потребно је да имате неке долазне поруке које апликација може да прикупи. SMS Gateway вам пружа могућност да симулирате долазне поруке како бисте тестирали своје решење. За то, једноставно отворите SMS Gateway и изаберите HTTP Server конекцију. Ако немате HTTP Server конекцију, проверите како да креирате HTTP Server конекцију. Овде, отворите HTML форму ове конекције, и као на Слици 6, пошаљите неке тест поруке.

симулирај долазне sms
Слика 6 - Симулирајте неке долазне SMS поруке

Корак 7 - Покрените Java апликацију

Последњи корак овог водича је да покренете Java апликацију. Ово је једноставна операција; све што треба да урадите је да кликнете на дугме 'Run' у Apache NetBeans као на Слици 7. Ова акција покреће пример Java кода, који исписује HTTP захтев који је послат на SMS Gateway, а затим исписује и одговор са SMS Gateway који садржи све долазне поруке.

покрени java код
Слика 7 - Покрените java код у NetBeans да бисте примили SMS

Да резимирамо

Овај водич који сте управо прочитали даје вам информације о томе како да примате SMS поруке са SMS Gateway користећи Java апликацију. Користећи наш Java SMS API, можете искористити ресурсе Java језика и користити их за контролу SMS Gateway. Java API у комбинацији са Ozeki SMS Gateway ће створити моћан систем за слање SMS порука способан да шаље до 1000 SMS порука у секунди.

Ако желите да сазнате више корисних информација о предностима других сличних API решења, посетите нашу страницу о Python за управљање SMS саобраћајем.

Ако вам је потребно прослеђивање e-mail на SMS и то још нисте урадили, Преузмите Ozeki SMS Gateway сада и направите овај подешавање!