En un pequeño proyecto que hice hace algún tiempo, implicaba iniciar sesión y registrarse con códigos de verificación SMS. Nunca había cubierto esto antes. De hecho, no lo entendí después de leer los blogs de otras personas. Ahora escribiré la función de usar la plataforma SMS de terceros para enviar códigos de verificación.
Tomando el registro como ejemplo, este artículo completa la función del código de verificación SMS basada en el marco SpringMVC+Spring+MyBatis.
El principio de enviar el código de verificación SMS es: generar aleatoriamente un número de 6 dígitos, guardar el número de 6 dígitos en la sesión, el cliente juzga la sesión correspondiente a través de SessionID y compara el código de verificación ingresado por el usuario con el código de verificación registrado por la sesión.
Para evitar que se sospeche cualquier anuncio, no hablaré sobre qué plataforma SMS es.
En general, las plataformas SMS de terceros tendrán su propia interfaz SMS. Siempre que comprenda su interfaz y realice un ligero cambio, puede satisfacer sus necesidades.
Primero, enumere el código de la interfaz de la plataforma SMS: Aquí necesitamos descargar tres paquetes jar commons-logging-1.1.1.jar, commons-httpclient-3.1.jar, commons-codec-1.4.jar
import java.io.unsupportedEncodingException; import org.apache.commons.httpclient.header; importar org.apache.commons.httpclient.httpclient; importar org.apache.commons.httpclient.nameValuePair; importar; importación; org.apache.commons.httpclient.methods.postmethod; public class sendmsg_webchinese {public static void main (string [] args) lanza excepción {httpclient cliente = new httpClient (); postmethod post = new postmethod ("http://gbk.sms.webchinesessessessessessessessessessessessessessessessessessessessessesssesssessesssesssessesssesssessessssessess. // La dirección de servicio de SMS de terceros post.AddRequestHeader ("Content-type", "Application/x-www-form-urlencoded; charset = gbk"); //Set transcoding NameValuePair[] data ={ new NameValuePair("Uid", "user name of this site"),new NameValuePair("Key", "interface security key"),new NameValuePair("smsMob","mobile number"),new NameValuePair("smsText","Verification code: 8888 ")}; post.setRequestBody (data); client.executemethod (post); encabezado [] encabezados = post.getResponseHeaders (); int statuscode = post.getStatUscode (); system.out.println (" statuscode: "+statuscode); para (Header H: encabezados) {System.out.println (h.ToString ());} string dult = new String (post.getResponseBodyAsstring (). GetBytes ("GBK")); System.out.println (resultado); // Imprima el estado de retorno del mensaje 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 ")};
También hay un mensaje de resultado en esta interfaz, que se utiliza para decirle al usuario el estado de enviar SMS. 1 significa que el envío es exitoso, y otros menos de 0 son fallas. Aquí, solo sé que 1 es exitoso.
En nuestras operaciones reales, el código de verificación debe ser generado por nosotros. Obtenga la información de los resultados junto con el código de verificación, por lo que es fácil pensar en usar una colección hashmap. Estos son los cambios en la interfaz en función de los requisitos del proyecto:
import java.util.hashmap; import org.apache.commons.httpclient.header; import org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.nameValuePair; import org.apache.htttpclient.method; com.yuetile.utilss.verifyCodeGenerator; public class sendmsg_webChineseController {public staticShmap <String, String> getMesSaGestatus (String Phone) lanza excepción {HashMap <String, String> M = New HashMap <String, String> (); HttpClient CLIENT = New HttpClient (); Postmethod ("http://gbk.sms.webchineses.cn"); post.AdDRequestHeader ("Content-type", "Application/X-WWW-Form-UrlEncoded; Charset = GBK"); // Establezca transcodificación en el código de archivo de encabezado = VerifyCodeGenerator.Generate (); // Código de verificación ValuePair [] Data = {New NameValuepair NameValuePair ("Key", "******"), New NameValuePair ("SmSmob", Phone), New NameValuePair ("Smstext", "está registrando un miembro de este sitio, este código de verificación es:"+Código+"+" Valuetime es 5 minutos ")}; M.put (" Code ", y", Código ", y",,, y ",, y", y ". código); post.setRequestBody (data); client.executemethod (post); encabezado [] encabezados = post.getResponseHeaders (); int statusCode = post.getStatUscode (); system.out.println ("statusCode:"+statusCode); for (encabezado h: encabezados) {system.println (h.Tostring (); String (post.getResponseBodyAsstring (). GetBytes ("GBK")); System.out.println (resultado); // Imprime el estado del mensaje de retorno M.put ("resultado", resultado); post.ReleaseConnection (); return m;}}*** significa la contraseña de cuenta registrada en una plataforma de terceros.
Capa de acción:
/*** @Author Hang* @DecCetcription Register, envíe el código de verificación de SMS, guarde a la sesión* @param encapsulate Solicitud del cliente Post* @return return Status parámetro* @throws Exception*/ @ResponseBody @requestmapping (valor = urltefine.register.CheckMessAgeWork, método = requestMethod.post) Public oggect sendChChEn {String Message = "Enviar correctamente"; String Phone = u.gettelephone (); // Obtenga el número de teléfono móvil enviado por el cliente UserBean User = Userservice.getByphone (teléfono); if (user! = null) {message = "El número de teléfono móvil ha sido registrado"; return New Response (status.error, mensaje);} else {hashmap <string, string> m = sendmsg_webchineeController.getMessageStatus (teléfono); // Aplicación SMS Interface String Result = m.get ("resultado"); // Obtener resultado if (resultado.trim (). Equals ("1")) {// Si es 1, significa que el código de cadena se envía correctamente. // Obtenga el código de verificación enviado contenido logger.info ("Código de verificación enviado:"+código); // Imprima la sesión de registro httpsession = request.getSession (); // establecer sessionssion.setAttribute ("código", código); // Ponga el código de verificación SMS en la sesión para guardar session.SetMaxInActiveInterval (60 * 5); // Guardar tiempo establecido temporalmente en 5 minutos Devuelve una nueva respuesta (status.success, mensaje);} else {message = "sms enviando fallido"; devolver una nueva respuesta (status.error, mensaje);}}}De esta manera, el envío tendrá éxito.
prueba:
Prueba localmente usando Postman:
resultado:
Enviar con éxito aquí.
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para el estudio o el trabajo de todos. ¡También espero apoyar a Wulin.com más!