Primanje SMS-a u Javi
Vodič na ovoj stranici pružit će vam kratak uvod u to kako možete dohvatiti primljene poruke iz SMS pristupnika u svoju Java aplikaciju. Ova operacija je prikazana jednostavnim Java kodom koji koristi HTTP zahtjeve za prikupljanje dolaznih poruka iz SMS pristupnika. Ako slijedite ovaj vodič, naučit ćete kako možete stvoriti primjer Java aplikacije koja dohvaća poruke iz mapa primljenih poruka i vidjet ćete kako testirati rješenje. Dakle, počnimo.
Što je Java SMS API?
Java SMS API omogućuje vam implementaciju SMS usluga u vašu Java aplikaciju. API komunicira s SMS pristupnikom koristeći HTTP zahtjeve koji šalju poruku i vraćaju odgovor.
Preduvjeti
- Instalirani Apache NetBeans IDE 12.0
- Instalirani Ozeki 10 SMS pristupnik
- Konfigurirana HTTP veza poslužitelja
- Otvorite Apache NetBeans IDE
- Kreirajte novu Java aplikaciju
- Kreirajte novu Java klasu
- Kopirajte i zalijepite primjer izvornog koda ispod
- Upišite 'https://localhost:9515' u svoj preglednik kako biste otvorili SMS Gateway
- Odaberite HTTP Server vezu i otvorite njegov HTML obrazac
- Pošaljite neke testne poruke
- Pokrenite Java aplikaciju kako biste primili poruke
Primjer Java SMS koda ispod koji može primiti dolazne poruke iz SMS Gatewaya je besplatan za korištenje, možete ga modificirati ili koristiti u svom projektu. Ako želite samo testirati rješenje, morate slijediti korak po korak upute ispod ili možete pogledati gornji video kako biste naučili kako možete kreirati primjer Java aplikacije koja može primiti dolazne poruke iz SMS Gatewaya.
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 - Otvorite Apache NetBeans IDE
Da biste mogli kreirati Java aplikaciju, potrebno je imati aplikaciju koja to omogućuje. Jedna od takvih aplikacija je Apache NetBeans IDE koju možete preuzeti iz odjeljka "Preduvjeti" gore. Ako već imate ovaj IDE, jednostavno ga otvorite s radne površine kao što je prikazano na slici 1.
Korak 2 - Kreirajte novu Java aplikaciju
Nakon što otvorite Apache NetBeans IDE, prva stvar koju trebate učiniti je kreirati Java aplikaciju. Za to odaberite opciju 'New project..' iz alatne trake. Ovom radnjom otvara se prozor koji sadrži sve dostupne projekte koje možete kreirati u Apache NetBeans. Ovdje odaberite opciju Java aplikacije kao na slici 2 i na kraju kliknite na 'Next'.
Korak 3 - Konfigurirajte Java aplikaciju
Prije kreiranja Java aplikacije, potrebno je izvršiti neke konfiguracije. U ovom izborniku trebate navesti naziv projekta, možete odabrati i lokaciju projekta. Naziv paketa također se može navesti ovdje. Ako ste završili sa svim konfiguracijama, jednostavno kliknite na 'Finish' kao na slici 3.
Korak 4 - Kreirajte Java klasu
Nakon što kreirate Java aplikaciju, morate kreirati Java klasu jer u ovom trenutku ona još ne sadrži niti jednu klasu. Za to desnim klikom odaberite paket, zatim 'New', i kao što pokazuje slika 4, kliknite na 'Java class...'. Zatim trebate navesti naziv za Java klasu i ako ste završili, kliknite na 'Create'.
Korak 5 - Zamijenite Java kod s ove stranice
U ovom trenutku imate Java aplikaciju koja vam je potrebna, ali ona ne sadrži ispravan kod. Da biste to popravili, trebate zamijeniti originalni kod s primjerom koda s ove stranice. Dakle, idite na primjer koda i kopirajte ga u međuspremnik pomoću tipkovničkog prečaca Ctrl+C. Zatim idite na kreiranu Java klasu i prvo izbrišite kod koji se ovdje nalazi. Nakon toga pritisnite Ctrl+V kako biste zalijepili primjer koda u Java klasu kao što je prikazano na slici 5.
Korak 6 - Pošaljite neke testne poruke
Prije pokretanja primjer Java aplikacije, potrebno je imati neke dolazne poruke koje aplikacija može prikupiti. SMS Gateway vam pruža mogućnost simuliranja dolaznih poruka kako biste mogli testirati svoje rješenje. Za to jednostavno otvorite SMS Gateway i odaberite HTTP Server vezu. Ako nemate HTTP Server vezu, provjerite kako kreirati HTTP Server vezu. Ovdje otvorite HTML obrazac ove veze i, kao na slici 6, pošaljite neke testne poruke.
Korak 7 - Pokrenite Java aplikaciju
Posljednji korak ovog vodiča je pokretanje Java aplikacije. Ovo je jednostavna operacija; sve što trebate učiniti je kliknuti na gumb 'Run' u Apache NetBeans kao na slici 7. Ova radnja pokreće primjer Java koda koji ispisuje HTTP zahtjev poslan SMS Gatewayu, a zatim ispisuje i odgovor od SMS Gatewaya koji sadrži sve dolazne poruke.
Ukratko
Ovaj vodič koji ste upravo pročitali pruža vam informacije o tome kako primati SMS poruke putem SMS Gatewaya koristeći Java aplikaciju. Koristeći naš Java SMS API, možete iskoristiti resurse Java jezika i koristiti ih za upravljanje SMS Gatewayom. Java API u kombinaciji s Ozeki SMS Gatewayom čini moćan sustav za slanje SMS poruka koji može poslati do 1000 SMS poruka u sekundi.
Ako želite saznati više korisnih informacija o prednostima drugih sličnih API rješenja, posjetite našu stranicu o Pythonu za upravljanje SMS prometom.
Ako trebate prosljeđivanje e-pošte na SMS i još niste to učinili, preuzmite Ozeki SMS Gateway sada i postavite ovu konfiguraciju!