Ce chapitre est la première partie de l'envoi de messages texte. Parlons du code pour envoyer des messages texte de manière synchrone / asynchrone. Dans les prochains articles, nous améliorerons légèrement les fonctions et ajouterons la limite de la fréquence d'envoi et les temps d'envoi quotidien.
Il peut y avoir de nombreuses façons d'envoyer des SMS. Notre méthode consiste à utiliser les services fournis par le fournisseur de services. D'une manière générale, ces services sont sans langue. Ici, nous utilisons Java pour écrire des exemples de programmes.
1. Interface pour l'envoi de messages texte <br /> Sélectionnez un fournisseur de services en fonction de votre propre situation.
2. Document de développement <Br /> Nous pouvons voir dans le document de développement. Vous pouvez utiliser directement les demandes HTTP ou pour envoyer des messages texte. Étant donné que le code des dossiers Java et JSP dans le dossier de démonstration utilise des demandes HTTP pour envoyer des SMS. Je ne vais donc pas entrer dans les détails ici. Nous utilisons le service Web pour démontrer l'envoi de messages texte.
3. Générer le code client
Dans le document d'interface, nous savons que l'URL de son wsdl WebService est: http://106.ihuyi.cn/webservice/sms.php?wsdl, alors nous pouvons exécuter la commande suivante pour générer du code client:
WSIMPORT -EFPECER http://106.ihuyi.cn/webservice/sms.php?wsdl
Parmi eux, WSIMPORT est un outil qui est livré avec JDK, et l'option de maintenance est "Gardez les fichiers générés". Cette commande générera des packages sms.cn.ihuyi._106 dans le répertoire actuel, ainsi que de nombreuses classes. Ensuite, commencez à écrire notre propre code.
4. Définissez l'interface
Pour plus de commodité, nous définissons ici d'abord une interface:
Sms.java
Interface publique SMS {/ ** * Envoyez un SMS à Mobile, le contenu est un message * * @param numéro de téléphone mobile * @param Message SMS Contenu * @return Renvoie avec succès -1, sinon renvoie une autre valeur * / int sendMessage (String Mobile, String Message);}Cette interface est très simple, il n'y a qu'une seule méthode. Cette méthode est utilisée pour envoyer des messages texte.
5. Envoyer des SMS simultanément
Ensuite, nous implémentons d'abord une classe qui envoie des SMS de manière synchrone:
Ihuyismsimpl.java
La classe publique iHuyisMSIMPL implémente SMS {compte de chaîne privée; mot de passe de chaîne privé; public void setAccount (String Account) {this.account = compte; } public void setPassword (String Motword) {this.password = mot de passe; } @Override public int sendMessage (String mobile, String Message) {cn.ihuyi._106.sms factory = new Cn.ihuyi._106.sms (); SMSSOAP SMSSOAP = FACTORY.GETTSMSOAP (); SoumideResult soumed = SMSSOAP.SUMMIT (compte, mot de passe, mobile, message); int code = soumed.getcode (); if (code == 2) {return -1; } System.out.println ("Envoyer SMS Échec, code:" + code); code de retour; }}Dans la ligne 17, nous obtenons un objet proxy de l'objet distant. Ensuite, nous pouvons envoyer des SMS, interroger le solde du compte et d'autres opérations via cet objet proxy.
À la ligne 18, le contenu SMS est soumis en utilisant la méthode de soumission de l'objet proxy. Les informations des paramètres et la signification de la valeur de retour de la méthode sont expliquées en détail dans le document d'interface.
À la ligne 19, nous obtenons le code d'état du résultat. Selon les instructions du document, le code d'état est 2, ce qui indique que la soumission est réussie. Pour plus de simplicité, nous nous concentrons uniquement sur la situation où la soumission est réussie. Il convient de noter que le code d'état est 2, indiquant seulement que la soumission est réussie. Selon le site officiel "Réponse en 3 à 5 secondes, arrivée à 100%" sur le site officiel, nous pouvons déduire. Si la soumission est réussie, le SMS sera en gros envoyé avec succès dans les 3 à 5 secondes. Selon la situation du réseau de l'utilisateur, l'utilisateur peut recevoir le SMS avec un léger retard.
Il est également très simple d'utiliser ce code pour envoyer des messages texte. Vous pouvez directement nouveau un objet, définir votre compte et votre mot de passe et envoyer des messages texte.
6. Envoyer des messages texte de manière asynchrone
Étant donné que l'envoi de SMS implique une communication réseau, la méthode SendMessage peut avoir un certain retard. Afin d'améliorer l'expérience utilisateur, nous pouvons utiliser la méthode d'envoi de SMS de manière asynchrone. Le principe est très simple: si l'utilisateur demande d'envoyer des SMS, au lieu d'appeler directement la méthode SendMessage d'IhuyismSimpl, nous enregistrons la demande (producteur), puis disons à l'utilisateur: le SMS est envoyé avec succès. Après cela, plusieurs consommateurs retirent la tâche et appellent la méthode SendMessage pour envoyer des SMS.
Ici, j'utilise du pool de threads pour terminer la tâche ci-dessus:
Asyncsmimpl.java
La classe publique AsyncSMSIMPL implémente SMS {public SMS Sendsms; Private ExecutorService ExecutorService = exécutor.NewFixEdThreadPool (3); public void setSendsms (sms Sendsms) {this.sendsms = sendsms; } @Override public int SendMessage (String mobile, string message) {try {exécutorService.Submit (() -> sendsms.sendMessage (mobile, message)); } catch (exception e) {sysemt.out.println ("L'erreur s'est produite lors de la soumission de la tâche" + e); retour 0; } return -1; } public void destrie () {try {EMMICRORSERVICE.shutdown (); } catch (exception e) {}}}Le code est très simple. Vous pouvez ajouter directement la méthode SendMessage (mobile, message) de l'interface SMS à la file d'attente des tâches du pool de threads en tant que tâche. De cette façon, lorsqu'il y a des threads gratuits, Sendsms.SendMessage (mobile, message) sera exécuté pour envoyer des SMS. Ici, nous supposons que tant qu'il est enregistré dans le pool de fils, vous pouvez envoyer avec succès des SMS. Parce que l'envoi d'échec est en fait rare.
Envoyer des messages texte de manière synchrone / asynchrone. Dans les prochains articles, nous allons jeter un œil à certaines restrictions courantes, telles que: vous ne pouvez envoyer qu'une fois par minute, vous ne pouvez envoyer que 5 fois par jour, etc.
J'espère que tout le monde aime cet article.