Recevoir des SMS en Java
Le guide sur cette page est sur le point de vous donner une brève introduction sur la façon dont vous pouvez obtenir les messages reçus depuis la passerelle SMS vers votre application Java. Cette opération est démontrée par un simple code Java qui utilise des requêtes HTTP pour collecter les messages entrants depuis la passerelle SMS. Si vous suivez ce guide, vous allez apprendre comment créer une application Java exemple qui récupère les messages depuis le dossier de réception et vous serez capable de voir comment tester la solution. Alors, commençons.
Qu'est-ce qu'une API SMS Java ?
L'API SMS Java vous permet d'implémenter des services SMS dans votre application Java. L'API communique avec la passerelle SMS en utilisant des requêtes HTTP qui envoient le message et retournent avec un message de réponse.
Prérequis
- Apache NetBeans IDE 12.0 installé
- Ozeki 10 SMS Gateway installé
- Une connexion HTTP Server configurée
- Ouvrez Apache NetBeans IDE
- Créez une nouvelle application Java
- Créez une nouvelle classe Java
- Copiez-collez le code source exemple ci-dessous
- Tapez 'https://localhost:9515' dans votre navigateur pour ouvrir la passerelle SMS
- Sélectionnez la connexion HTTP Server et ouvrez son formulaire HTML
- Envoyez quelques messages de test
- Exécutez l'application Java pour recevoir les messages
Le code exemple Java ci-dessous, qui permet de recevoir les messages entrants depuis la passerelle SMS, est libre d'utilisation. Vous pouvez le modifier ou l'utiliser dans votre projet. Si vous souhaitez simplement tester la solution, vous devez suivre les instructions étape par étape ci-dessous ou regarder la vidéo ci-dessus pour apprendre comment créer l'application Java exemple qui peut recevoir les messages entrants depuis la passerelle SMS.
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 "?"; } }
Étape 1 - Ouvrir Apache NetBeans IDE
Pour pouvoir créer une application Java, vous avez besoin d'un logiciel capable de le faire. L'un de ces logiciels est Apache NetBeans IDE, qui peut être téléchargé dans la section Prérequis ci-dessus. Si vous avez déjà cet IDE, il vous suffit de l'ouvrir depuis votre bureau comme vous pouvez le voir sur la Figure 1.
Étape 2 - Créer une nouvelle application Java
Après avoir ouvert Apache NetBeans IDE, la première chose à faire est de créer une application Java. Pour cela, sélectionnez l'option 'Nouveau projet...' dans la barre d'outils. Cette action ouvre une fenêtre contenant tous les projets disponibles pouvant être créés dans Apache NetBeans. Ici, sélectionnez l'option Application Java comme sur la Figure 2, puis cliquez sur 'Suivant'.
Étape 3 - Configurer l'application Java
Avant de créer l'application Java, vous devez effectuer quelques configurations. Dans ce menu, vous devez spécifier un nom pour le projet, et vous pouvez également choisir un emplacement pour le projet. Le nom du package peut également être spécifié ici. Une fois toutes les configurations terminées, cliquez sur 'Terminer' comme sur la Figure 3.
Étape 4 - Créer une classe Java
Après avoir créé l'application Java, vous devez créer une classe Java car à ce stade, elle ne contient encore aucune classe. Pour cela, faites un clic droit sur le package, puis sélectionnez 'Nouveau', et comme le montre la Figure 4, cliquez sur 'Classe Java...'. Ensuite, spécifiez un nom pour la classe Java et cliquez sur 'Créer' une fois terminé.
Étape 5 - Remplacer le code Java de cette page
À ce stade, vous avez l'application Java dont vous avez besoin, mais elle ne contient pas le bon code. Pour corriger cela, vous devez remplacer le code original par l'exemple de code de cette page. Allez donc à l'exemple de code, copiez-le dans votre presse-papiers avec le raccourci clavier Ctrl+C. Ensuite, allez dans la classe Java créée, supprimez d'abord le code que vous y trouvez, puis appuyez sur Ctrl+V pour coller l'exemple de code dans la classe Java comme sur la Figure 5.
Étape 6 - Envoyer des messages de test
Avant d'exécuter l'application Java exemple, vous devez avoir des messages entrants qui peuvent être collectés par l'application. SMS Gateway vous offre la possibilité de simuler les messages entrants pour tester votre solution. Pour cela, ouvrez simplement SMS Gateway et sélectionnez la connexion HTTP Server. Si vous n'avez pas de connexion HTTP Server, consultez comment créer une connexion HTTP Server. Ici, ouvrez le formulaire HTML de cette connexion et, comme sur la Figure 6, envoyez quelques messages de test.
Étape 7 - Exécuter l'application Java
La dernière étape de ce guide est d'exécuter l'application Java. C'est une opération simple : il vous suffit de cliquer sur le bouton 'Exécuter' dans Apache NetBeans comme sur la Figure 7. Cette action exécute le code Java exemple, qui affiche la requête HTTP envoyée à SMS Gateway, puis affiche également la réponse de SMS Gateway contenant tous les messages entrants.
Pour résumer
Ce guide vous a fourni des informations sur la manière de recevoir des SMS depuis SMS Gateway en utilisant une application Java. En utilisant notre API SMS Java, vous pouvez exploiter les ressources du langage Java pour contrôler SMS Gateway. L'API Java combinée avec Ozeki SMS Gateway formera un système puissant capable d'envoyer jusqu'à 1000 SMS par seconde.
Si vous souhaitez en savoir plus sur les avantages d'autres solutions API similaires, visitez notre page sur Python pour gérer le trafic SMS.
Si vous avez besoin de transférer des e-mails vers SMS et que vous ne l'avez pas encore fait, téléchargez Ozeki SMS Gateway dès maintenant et configurez ce système !