In einem kleinen Projekt, das ich vor einiger Zeit gemacht habe, beinhaltete es die Anmeldung und Registrierung bei SMS -Verifizierungscodes. Ich hatte das noch nie zuvor behandelt. Ich habe es eigentlich nicht verstanden, nachdem ich die Blogs anderer Leute gelesen habe. Jetzt werde ich die Funktion der SMS-Plattform von Drittanbietern aufschreiben, um Bestätigungscodes zu senden.
In diesem Artikel wird die Registrierung anhand des SMS -Verifizierungscodefunktion basierend auf dem Framework SpringMVC+Spring+MyBatis abgeschlossen.
Das Prinzip des Sendens des SMS-Verifizierungscodes lautet: Erzeugen Sie zufällig eine 6-stellige Nummer, speichern Sie die 6-stellige Nummer in der Sitzung, beurteilt die entsprechende Sitzung über SessionID und vergleicht den vom Benutzer eingegebenen Bestätigungscode mit dem von der Sitzung aufgezeichneten Bestätigungscode.
Um zu verhindern, dass Anzeigen vermutet werden, werde ich nicht darüber sprechen, welche SMS -Plattform es ist.
Im Allgemeinen haben SMS-Plattformen von Drittanbietern eine eigene SMS-Schnittstelle. Solange Sie ihre Benutzeroberfläche verstehen und eine leichte Änderung vornehmen, können Sie Ihre Bedürfnisse erfüllen.
Listen Sie zunächst den SMS-Plattform-Schnittstellencode auf: Hier müssen wir drei JAR-Pakete Commons-Logging-1.1.1.jar, Commons-httpclient-3.1.jar, Commons-codec-1.4.jar herunterladen
importieren java.io.unsupportedenCodingException; import org.apache.commons.httpclient.header; import org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.namevaluepair; org.apache.commons.httpclient.methods.postMethod; öffentliche Klasse sendmsg_webchinese {public static void main (String [] args) löst eine Ausnahme aus {httpclient client = new httpclient (); postMethod postmethod ("httpclient (" http./gbc.sms.wEBch "; // die SMS-Serviceadresse von Drittanbietern Post.AdDRequestheader ("Content-Typ", "Anwendung/x-www-form-urlencoded; charset = gbk"); // transcodierende namevaluepair setzen 8888 ")}; post.setRequestBody (Daten); Client.Executemethod (post); Header [] headers = post.getResponseHeaders (); int statusCode = post.getStatusCode (); System.out.println (" Statuscode: "+statuscode); Header) {System.out.println (H.ToString ());} String result = new String (post.getResponseBoppeSbodyAssstring (). getBytes ("gbk"); System.out.println (Ergebnis); // Rückgabemeldungsstatus post.releaseconnection ();}}It is not difficult to see that the information we want to send is in this line of code: NameValuePair[] data ={ new NameValuePair("Uid", "Site Username"), new NameValuePair("Key", "Interface Security Key"), new NameValuePair("smsMob", "Mobile phone number"), new NameValuePair("smsText","Verification code: 8888 ")};
In dieser Schnittstelle gibt es auch eine Ergebnismeldung, mit der der Benutzer den Status des Sendens von SMS mitteilt. Ich bedeutet, dass das Senden erfolgreich ist und andere weniger als 0 Fehler sind. Hier wissen Sie einfach, dass ich erfolgreich ist.
In unseren tatsächlichen Operationen muss der Verifizierungscode von uns generiert werden. Holen Sie sich die Ergebnisinformationen zusammen mit dem Verifizierungscode, sodass es sich leicht über die Verwendung einer HashMap -Sammlung nachdenken kann. Hier sind die Änderungen an der Schnittstelle basierend auf den eigenen Anforderungen des Projekts:
import Java.util.hashMap; import org.apache.commons.httpclient.header; import org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.namevaluepair; com.yuetile.utils.VerifikationCodeGenerator; öffentliche Klasse sendsg_webchineController {public static Hashmap <String, String> getMessAgestatus (String Phone) löst Ausnahme aus {Hashmap <String, String> m = new Hashmap <String> (); PostMethod ("http://gbk.sms.webchinese.cn"); post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//Set transcoding in the header file String code=VerifyingCodeGenerator.generate();//Verification code NameValuePair[] data ={ new NameValuePair("Uid", "****"),new NameValuepair ("key", "******"), neuer namevaluepair ("smsmob", Telefon), neuer NameValuePair ("smStext", "Sie registrieren ein Mitglied dieser Website, dieser Verifizierungscode lautet:"+Code+"+" WertTime ist 5 Minuten ")}; code); post.setRequestbody (data); client.executemethod (post); header [] headers = post.getResponseHeaders (); int statusCode = post.getStatusCode (); System.out.println ("StatusCode:"+statusCode); for (Header). String (post.getResponseBodyAssstring (). GetBytes ("gbk")); System.out.println (Ergebnis); // Rückgabemeldungsstatus M.put ("Ergebnis", Ergebnis); post.releaseconnection (); return m;}}*** bedeutet das auf einer Drittanbieter-Plattform registrierte Kontokennwort.
Aktionsschicht:
/*** @Author Hang* @deccription Register, SMS -Verifizierungscode senden, in Sitzung speichern Ausnahme {String message = "erfolgreich senden"; String mone = u.gettelephone (); // Die von der Client userBean user = userService.getByphone (Telefon) gesendete Mobiltelefonnummer erhalten. if (user! = null) {message = "Die Mobiltelefonnummer wurde registriert"; Neue Antwort zurückgeben (Status.Error, Nachricht);} else {HashMap <String, String> m = sendsg_webchineController.getMessAgestatus (Telefon); // Anwendung SMS Interface String Ergebnis = M.Get ("Ergebnis"); // Ergebnis abrufen if (result.trim (). Equals ("1")) {// Wenn es 1 ist, bedeutet dies, dass der String -Code erfolgreich gesendet wird. // Erhalten Sie den gesendeten Verifizierungscode -Inhalt logger.info ("gesendeten Verifizierungscode:"+Code); // Drucken Sie das Protokoll httpSession Session = Request.GetSession (); // SESSIsionSsion.SetAttribute ("Code", Code) festlegen; // den SMS -Verifizierungscode in die Sitzung eingeben, um die Sitzung zu speichern. // Zeit sparen vorübergehend auf 5 Minuten eingelegt neue Antwort zurückgeben (Status.Success, Nachricht);} else {message = "SMS -Senden fehlgeschlagen"; Neue Antwort zurückgeben (Status.Error, Nachricht);}}}Auf diese Weise wird das Senden erfolgreich sein.
prüfen:
Testen Sie lokal mit Postboten:
Ergebnis:
Hier erfolgreich senden.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels für das Studium oder die Arbeit eines jeden hilfreich sein wird. Ich hoffe auch, Wulin.com mehr zu unterstützen!