Prejemanje SMS v Javi

Vodnik na tej strani vam bo dal kratek uvod v to, kako lahko prejmete sporočila iz SMS prehoda v vašo Java aplikacijo. Ta operacija je prikazana s preprosto Java kodo, ki uporablja HTTP zahteve za zbiranje dohodnih sporočil iz SMS prehoda. Če sledite temu vodniku, se boste naučili, kako ustvariti primer Java aplikacije, ki pridobi sporočila iz mapo »inbox«, in videli, kako preizkusiti rešitev. Torej, začnimo.

Kaj je Java SMS API?

Java SMS API vam omogoča implementacijo SMS storitev v vašo Java aplikacijo. API komunicira z SMS prehodom z uporabo HTTP zahtev, ki pošljejo sporočilo in vrnejo odzivno sporočilo.

Predpogoji

Prejemanje SMS v Javi

  1. Odprite Apache NetBeans IDE
  2. Ustvarite novo Java aplikacijo
  3. Ustvarite nov razred Java
  4. Kopirajte in prilepite primer izvorne kode spodaj
  5. V brskalniku vnesite 'https://localhost:9515' za odpiranje SMS Gateway
  6. Izberite povezavo HTTP strežnika in odprite njegovo HTML obrazec
  7. Pošljite nekaj testnih sporočil
  8. Zaženite Java aplikacijo za prejemanje sporočil

Video 1 - Kako prejemati SMS v Javi (Video vadnica)

Spodnja primerjava kode Java za prejemanje SMS-ov, ki lahko pridobi dohodna sporočila iz SMS Gateway, je brezplačna za uporabo. Lahko jo spremenite ali uporabite v svojem projektu. Če želite samo preizkusiti rešitev, morate slediti navodilom korak za korakom spodaj ali si lahko ogledate zgornji video, da se naučite, kako ustvariti primer Java aplikacije, ki lahko pridobi dohodna sporočila iz 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 "?";
      }
}

Korak 1 - Odprite Apache NetBeans IDE

Za ustvarjanje Java aplikacije potrebujete program, ki je sposoben to izvesti. Eden takih programov je Apache NetBeans IDE, ki ga lahko prenesete iz poglavja "Pogoji" zgoraj. Če že imate ta IDE, ga preprosto odprite z namizja, kot je prikazano na sliki 1.

odpri netbeans
Slika 1 - Odprite Apache NetBeans

Korak 2 - Ustvarite novo Java aplikacijo

Ko odprete Apache NetBeans IDE, je prva stvar, ki jo morate narediti, ustvariti Java aplikacijo. Za to izberite možnost 'Nov projekt...' v orodni vrstici. S tem se prikaže okno z vsemi razpoložljivimi projekti, ki jih lahko ustvarite v Apache NetBeans. Tukaj izberite možnost Java aplikacija, kot je prikazano na sliki 2, in nato kliknite na 'Naprej'.

ustvari nov projekt
Slika 2 - Ustvari nov projekt Java aplikacije

Korak 3 - Konfigurirajte Java aplikacijo

Preden ustvarite Java aplikacijo, morate opraviti nekaj nastavitev. V tem meniju morate določiti ime projekta, lahko pa izberete tudi lokacijo za projekt. Tukaj lahko določite tudi ime paketa. Ko končate z vsemi nastavitvami, kliknite na 'Končaj', kot je prikazano na sliki 3.

konfiguriraj projekt
Slika 3 - Konfigurirajte ime projekta in paketa

Korak 4 - Ustvarite Java razred

Ko ustvarite Java aplikacijo, morate ustvariti Java razred, saj ta trenutno še ne vsebuje nobenega razreda. Za to z desnim klikom izberite paket, nato 'Nov' in kot prikazuje slika 4, kliknite na 'Java razred...'. Nato določite ime za Java razred in ko končate, kliknite na 'Ustvari'.

ustvari nov java razred
Slika 4 - Ustvari nov Java razred

Korak 5 - Zamenjajte Java kodo s te strani

Na tej točki imate Java aplikacijo, ki jo potrebujete, vendar ne vsebuje prave kode. Da to popravite, morate izvirno kodo zamenjati s primerom kode s te strani. Pojdite na primer kode in jo kopirajte v odložišče s kombinacijo tipk Ctrl+C. Nato pojdite v ustvarjeni Java razred in najprej izbrišite kodo, ki jo najdete tam. Nato pritisnite Ctrl+V, da prilepite primer kode v Java razred, kot je prikazano na sliki 5.

zamenjaj java kodo
Slika 5 - Zamenjajte Java kodo s spletne strani

Korak 6 - Pošljite nekaj testnih sporočil

Preden zaženete primer Java aplikacije, potrebujete nekaj dohodnih sporočil, ki jih lahko aplikacija zbira. SMS Gateway vam omogoča simulacijo dohodnih sporočil, da lahko preizkusite svojo rešitev. Za to preprosto odprite SMS Gateway in izberite povezavo HTTP strežnika. Če nimate povezave HTTP strežnika, preverite kako ustvariti povezavo HTTP strežnika. Tukaj odprite HTML obrazec te povezave in pošljite nekaj testnih sporočil, kot je prikazano na sliki 6.

simuliraj dohodna sms
Slika 6 - Simulirajte nekaj dohodnih SMS

Korak 7 - Zaženite Java aplikacijo

Zadnji korak tega vodiča je zagon Java aplikacije. To je preprosta operacija; vse kar morate storiti je, da kliknete na gumb 'Zaženi' v Apache NetBeans, kot je prikazano na sliki 7. Ta akcija zažene primer Java kode, ki izpiše HTTP zahtevo, poslano SMS Gatewayu, in nato izpiše tudi odziv SMS Gatewaya, ki vsebuje vsa dohodna sporočila.

zaženi java kodo
Slika 7 - Zaženite Java kodo v NetBeans za prejem SMS

Če povzamemo

Ta vodič, ki ste ga pravkar prebrali, vam daje informacije o tem, kako prejemati SMS sporočila iz SMS Gatewaya z uporabo Java aplikacije. Z uporabo naše Java SMS API lahko izkoristite vire Java jezika in ga uporabite za nadzor SMS Gatewaya. Java API v kombinaciji z Ozeki SMS Gatewayom bo ustvaril zmogljiv sistem za pošiljanje SMS, ki lahko pošlje do 1000 SMS na sekundo.

Če želite izvedeti več koristnih informacij o prednostih drugih podobnih API rešitev, obiščite našo stran o Python za upravljanje SMS prometa.

Če potrebujete posredovanje e-pošte v SMS in tega še niste storili, prenesite Ozeki SMS Gateway zdaj in ustvarite to nastavitev!