Dieses Kapitel ist der erste Teil des Sendens von Textnachrichten. Sprechen wir über den Code zum Senden von Textnachrichten synchron/asynchron. In den nächsten Artikeln werden wir die Funktionen leicht verbessern und die Begrenzung der Sendungsfrequenz und der täglichen Sendungszeiten hinzufügen.
Es kann viele Möglichkeiten geben, Textnachrichten zu senden. Unsere Methode ist es, die vom Dienstanbieter bereitgestellten Dienste zu nutzen. Im Allgemeinen sind diese Dienste sprachfrei. Hier verwenden wir Java, um Beispielprogramme zu schreiben.
1. Schnittstelle zum Senden von Textnachrichten <BR /> Wählen Sie einen Dienstanbieter gemäß Ihrer eigenen Situation aus.
2. Entwicklungsdokument <br /> wir können aus dem Entwicklungsdokument sehen. Sie können HTTP -Anforderungen direkt oder WebService -Anfragen zum Senden von Textnachrichten verwenden. Da der Code in den Ordnern Java und JSP im Demo -Ordner HTTP -Anforderungen zum Senden von Textnachrichten verwenden. Also werde ich hier nicht auf Details eingehen. Wir verwenden WebService, um Senden von Textnachrichten zu demonstrieren.
3. Generieren Sie den Client -Code
Aus dem Schnittstellendokument wissen wir, dass die URL ihres Webservice WSDL: http://106.ihuyi.cn/webservice/sms.php?wsdl lautet, dann können wir den folgenden Befehl ausführen, um Client -Code zu generieren:
WSIMPORT -KAUF http://106.ihuyi.cn/webservice/sms.php?wsdl
Unter ihnen ist WSIMPORT ein Tool, das mit JDK geliefert wird, und die URL -Option -Halten Sie die generierten Dateien auf. Dieser Befehl generiert Sms.cn.ihuyi._106 Pakete im aktuellen Verzeichnis sowie in vielen Klassen. Als nächstes schreiben Sie unseren eigenen Code.
4. Definieren Sie die Schnittstelle
Zur Bequemlichkeit definieren wir hier zuerst eine Schnittstelle:
Sms.java
Die öffentliche Schnittstelle SMS { / ** * Senden Sie eine SMS an Mobile, der Inhalt ist eine Nachricht * * @param Handynummer * @param Nachricht SMS -Inhalt * @return erfolgreich -1 zurück, ansonsten gibt ein weiterer Wert zurück * / int sendMessage (String Mobile, String Message);};};};Diese Schnittstelle ist sehr einfach, es gibt nur eine Methode. Diese Methode wird verwendet, um Textnachrichten zu senden.
5. SMS gleichzeitig Textnachrichten senden
Als nächstes implementieren wir zuerst eine Klasse, die SMS synchron sendet:
Ihuyismsimpl.java
öffentliche Klasse Ihuyismpl implementiert SMS {private String -Konto; privates Zeichenfolgenkennwort; public void setAccount (String -Konto) {this.account = Account; } public void setPassword (String -Passwort) {this.password = password; } @Override public int sendMessage (String Mobile, String Message) {cn.ihuyi._106.sms factory = new Cn.ihuyi._106.sms (); SMSSOAP SMSSOAP = factory.getSmSSoap (); SubestResult reichen = smssoap.submit (Konto, Passwort, Mobile, Nachricht); int code = subieren.getCode (); if (code == 2) {return -1; } System.out.println ("SMS fehlgeschlagen, Code:" + Code); Rückgabecode; }}In Zeile 17 erhalten wir ein Proxy -Objekt des Remote -Objekts. Anschließend können wir SMS senden, den Kontostand und andere Operationen über dieses Proxy -Objekt abfragen.
In Zeile 18 wird der SMS -Inhalt mithilfe der Sendemethode des Proxy -Objekts übermittelt. Die Parameterinformationen und die Rückgabewert Bedeutung der Methode werden im Schnittstellendokument ausführlich erläutert.
In Zeile 19 erhalten wir den Statuscode des Ergebnisses. Gemäß den Anweisungen im Dokument ist der Statuscode 2, was darauf hinweist, dass die Einreichung erfolgreich ist. Der Einfachheit halber konzentrieren wir uns nur auf die Situation, in der die Einreichung erfolgreich ist. Es ist zu beachten, dass der Statuscode 2 ist und nur angibt, dass die Einreichung erfolgreich ist. Laut der offiziellen Website "Antwort innerhalb von 3-5 Sekunden, 100% Ankunft" auf der offiziellen Website können wir schließen. Wenn die Einreichung erfolgreich ist, werden die SMS im Grunde innerhalb von 3-5 Sekunden erfolgreich gesendet. Gemäß der Netzwerksituation des Benutzers kann der Benutzer die SMS mit einer geringen Verzögerung erhalten.
Es ist auch sehr einfach, diesen Code zu verwenden, um Textnachrichten zu senden. Sie können ein Objekt direkt neu neu machen, Ihr Konto und Passwort festlegen und Textnachrichten senden.
6. Asynchron Textnachrichten senden
Da das Senden von SMS die Netzwerkkommunikation beinhaltet, kann die SendMessage -Methode eine Verzögerung aufweisen. Um die Benutzererfahrung zu verbessern, können wir die Methode zum asynchronen SMS -Senden verwenden. Das Prinzip ist sehr einfach: Wenn der Benutzer anfordert, SMS zu senden, speichern wir die Anfrage (Produzent) und sagen dem Benutzer, anstatt direkt die SendMessage -Methode von Ihuyismpl zu rufen, und sagen dann dem Benutzer: Die SMS wird erfolgreich gesendet. Danach nehmen mehrere Verbraucher die Aufgabe aus und rufen die SendMessage -Methode an, um SMS zu senden.
Hier verwende ich den Thread -Pool, um die obige Aufgabe zu erledigen:
AsyncsmSmempl.java
öffentliche Klasse AsyncsmSmpl implementiert SMS {öffentliche SMS sendsms; private ExecutorService ExecutorService = Executors.NewFixedThreadpool (3); public void setsendsms (sms sendsms) {this.sendsms = sendsms; } @Override public int sendMessage (String Mobile, String Message) {try {ExecutorService.submit (() -> sendsms.sendMessage (mobil, meldung)); } catch (Ausnahme e) {sysemt.out.println ("Fehler beim Senden der Aufgabe" + e); Rückkehr 0; } return -1; } public void destroy () {try {ExecutorService.shutdown (); } catch (Ausnahme e) {}}}Der Code ist sehr einfach. Sie können die SendMessage (Mobile, Message) -Methode der SMS -Schnittstelle als Aufgabe zur Taskwarteschlange des Thread -Pools direkt hinzufügen. Auf diese Weise wird, wenn es kostenlose Threads gibt, sendsms.sendMessage (Mobile, Nachricht) zum Senden von SMS ausgeführt. Hier gehen wir davon aus, dass Sie SMS erfolgreich senden können, solange es auf dem Thread -Pool gespeichert ist. Weil das Senden von Scheitern tatsächlich selten ist.
Senden Sie Textnachrichten synchron/asynchron werden abgeschlossen. In den nächsten Artikeln werden wir uns einige allgemeine Einschränkungen ansehen, wie z.
Ich hoffe, jeder mag diesen Artikel.